Dre*_*gel 5 c# datagridview datagridviewcolumn winforms
我的UI由一个AutoCreateColumns= false
绑定到业务对象列表的datagridview()组成.让我们假设我的对象包含2列 - 价格和数量 - 我想在我的网格中添加一个新列 - 总计 - 将计算哪个值 - 价格*数量,但不修改我的业务对象.
可能吗?
是.
您可以通过编程方式将未绑定列添加到网格中,并使用事件填充列的单元格.
有两种主要的方法来填充未绑定列的内容:处理RowsAdded事件或处理CellFormatting事件.如果网格是可编辑的,则还需要处理CellValueChanged.CellFormatting事件还可用于将值在单元格中呈现时转换为与实际存储在网格后面的数据中的值不同的值.
代码示例 -
private void OnCellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == grid.Columns["Unbound"].Index)
{
e.FormattingApplied = true;
DataGridViewRow row = grid.Rows[e.RowIndex];
e.Value = string.Format("{0} : {1}",
row.Cells["SomeColumn1"].Value,
row.Cells["SomeColumn2"].Value);
}
}
private void OnRowsAdded(object sender,
DataGridViewRowsAddedEventArgs e)
{
for (int i = 0; i < e.RowCount; i++)
{
DataGridViewRow row = grid.Rows[e.RowIndex + i];
row.Cells["Unbound"].Value = string.Format("{0} : {1}",
row.Cells["SomeColumn1"].Value,
row.Cells["SomeColumn2"].Value);
}
}
Run Code Online (Sandbox Code Playgroud)
更详细 - http://www.informit.com/articles/article.aspx?p=446453&seqNum=5
归档时间: |
|
查看次数: |
5773 次 |
最近记录: |