Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实时C中datagridview中的列总和#_C#_.net_Winforms_Datagridview - Fatal编程技术网

C# 实时C中datagridview中的列总和#

C# 实时C中datagridview中的列总和#,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我正在使用datagridview。 如何实时获取数量总和。我试过这个: DataTable Dt = (DataTable)dataGridView1.DataSource; if (int.TryParse(Dt.Compute("SUM(Qty)", "").ToString(), out Sum)) { textBoxQtyinStock.Text = Sum.ToString("N0"); } 在datagridview的RowLeave、CellLeave、CellVal

我正在使用datagridview。 如何实时获取数量总和。我试过这个:

DataTable Dt = (DataTable)dataGridView1.DataSource;

if (int.TryParse(Dt.Compute("SUM(Qty)", "").ToString(), out Sum))
{
    textBoxQtyinStock.Text = Sum.ToString("N0");
}

在datagridview的RowLeave、CellLeave、CellValueChanged、CellValidated事件中调用此函数。但这对我不起作用。我怎样才能做到这一点

必须计算Qty列的sun的方法看起来是正确的,但是您在调试器中看到Dt.compute返回什么了吗

// Declare an "object"
object sumQty;
sumQty = table.Compute("Sum(Qty)", "");
据我所知,您不需要触发任何事件来计算DataTable中已有的数据

如果您的问题是在插入新数据后如何触发DataTable的更新,则需要为正在编辑的单元格处理EndEdit事件


我希望这是有意义的。

您可能正在寻找
DataGridView
CellValueChanged
事件。每次单元格值更改时,都会触发此事件。触发此事件时,将进行检查,以查看是否在包含要求和的值的列中更改了单元格。如果更改的单元格位于要求和的列中,则只需循环该列中的值,并更新文本框以反映新的求和值

下面是我正在描述的一个例子。第四列(称为“点”)包含该列中的整数值。
CellValueChanged
事件检查更改的单元格是否来自“点”列(第3列),如果是,则更新文本框

当用户输入新值或更改现有值时…文本框应自动更新以反映这些更改。我希望这是有意义的,对你有用

DataTable dt = new DataTable();

private void Form_DGV_DataTable_Load(object sender, EventArgs e) {
  dt = Utilities.GetTableWithPlayers(filePath);
  dataGridView1.DataSource = dt;
  UpdatePoints();
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) {
  if (e.ColumnIndex == 3)
    UpdatePoints();
}

private void UpdatePoints() {
  textBox1.Text = dt.Compute("SUM(Points)", "").ToString();
}

它计算总和,但不是实时的。我想在用户输入StockOK后立即计算sum,然后您只需要确保处理EndEdit事件或DataTable和call table中新数据可用后触发的任何事件;再说一次。你能推荐一个最合适的事件吗?好的,当然-但是你需要告诉你如何将数据绑定到数据网格。截图其实没说多少!我遗漏了确切的问题,您正在寻找正确的事件,请检查您是否考虑使用
DataGridView
s
CellValueChanged
事件?只要单元格中的值发生更改,就会触发此事件。只需检查更改的单元格是否在“数量”列中,如果是,则更新文本框。只是一个想法。