在DataGridView列中计算
我有一个DataGridView,我想在其中将两个不同列的值汇总到第三列。
示例DataGridView:
AB Total 1 2 3 25 35 60 5 -5 0
我想在A & B column
输入值或离开当前行后,总共添加(A + B)。 并且还想将Total Column设置为ReadOnly
。
您可以在CellValidatedEvent上执行此操作,并且可以将相同的方法应用于RowValidated:
private void dataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { DataGridViewRow row = dataGridView.Rows[e.RowIndex]; string valueA = row.Cells[columnA.Index].Value.ToString(); string valueB = row.Cells[columnB.Index].Value.ToString(); int result; if (Int32.TryParse(valueA, out result) && Int32.TryParse(valueB, out result)) { row.Cells[columnTotal.Index].Value = valueA + valueB; } } }
您可以在设计器中将列设置为ReadOnly,或者像这样:
dataGridView.Columns["Total"].ReadOnly = true
这是一个有效的例子:
public partial class Form1 : Form { DataGridView _calcDataGridView; public Form1() { InitializeComponent(); _calcDataGridView = new DataGridView(); this.Controls.Add(_calcDataGridView); _calcDataGridView.Dock = DockStyle.Fill; _calcDataGridView.Name = "CalcDataGridView"; _calcDataGridView.CellEndEdit += Calculate; var aColumn = new DataGridViewTextBoxColumn(); aColumn.Name = "AColumn"; aColumn.HeaderText = "A"; _calcDataGridView.Columns.Add(aColumn); var bColumn = new DataGridViewTextBoxColumn(); bColumn.Name = "BColumn"; bColumn.HeaderText = "B"; _calcDataGridView.Columns.Add(bColumn); var totalColumn = new DataGridViewTextBoxColumn(); totalColumn.Name = "TotalColumn"; totalColumn.HeaderText = "Total"; totalColumn.ReadOnly = true; _calcDataGridView.Columns.Add(totalColumn); } private void Calculate(object sender, DataGridViewCellEventArgs e) { object a = _calcDataGridView.CurrentRow.Cells["AColumn"].Value; object b = _calcDataGridView.CurrentRow.Cells["BColumn"].Value; double aNumber = 0; double bNumber = 0; if (a != null) aNumber = Double.Parse(a.ToString()); if (b != null) bNumber = Double.Parse(b.ToString()); _calcDataGridView.CurrentRow.Cells["TotalColumn"].Value = aNumber + bNumber; } }
如果使用Eval
不是U的数据绑定可以在那里创建一个方法,那么只需对这两个值求和。
喜欢
对于A栏
<%# Eval("A")%>
对于B列
<%# Eval("B")%>
总计
<%# GetTotal(Eval("A"),Eval("B")) %>
总方法
private string GetTotal(object A,object B) { return (A+B).ToString(); }
希望这会帮助你。
你可以轻松地做到这一点
但是你应该拥有像SQL一样的数据集或本地数据库连接我会假设你得到它并将其命名为Totaldataset。
轻松完成我知道答案太晚了但也许它可以帮助一些新读者。
Datacolumn column = new Datacolumn (); column.Columnname = "Total"; Totaldataset.Tables[0].Columns.["Total"].Expression = "a+b";