DataGridView列中的计算
本文关键字:计算 DataGridView | 更新日期: 2023-09-27 17:57:30
我有一个DataGridView,我想在其中将两个不同列的值相加到第三列中。
示例DataGridView:
A B Total
1 2 3
25 35 60
5 -5 0
我想在A & B column
中输入值或离开当前行后,加上(A+B)。并且还希望将"总计列"设置为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
您可以轻松完成此
但是您应该有一个数据集或本地数据库连接,如SQL我会假设你得到了它并说出它的名字Totaldataset。
做得很容易,我知道答案太晚了,但也许它能帮助一些新读者。
Datacolumn column = new Datacolumn ();
column.Columnname = "Total";
Totaldataset.Tables[0].Columns.["Total"].Expression = "a+b";
这是一个工作示例:
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列
<ItemTemplate>
<%# Eval("A")%>
</ItemTemplate>
对于列B
<ItemTemplate>
<%# Eval("B")%>
</ItemTemplate>
对于总
<ItemTemplate>
<%# GetTotal(Eval("A"),Eval("B")) %>
</ItemTemplate>
对于总方法
private string GetTotal(object A,object B)
{
return (A+B).ToString();
}
希望这对你有帮助。