gpt4 book ai didi

c# - winforms datagridview计算字段更改事件

转载 作者:行者123 更新时间:2023-11-30 12:37:23 27 4
gpt4 key购买 nike

我有一个从数据表绑定(bind)的数据 GridView 。我有一个计算的列 linetotal,它是单价 * 数量的倍数。

我还有一个 totalprice 标签,我想在 datagridview 中包含 linetotal 列的总和。

当用户对单价或数量进行任何更改时,该行的行总计应该更新,总价标签应该对行总计列求和。

我似乎无法找到用于计算总价标签的正确事件。我试过 cellvaluechanged、currentcelldirtystatechanged、rowleave。他们似乎都无法正常工作。我想我需要一个在计算完所有 linetotal 列后触发的事件。

我的伪代码:

dt = getallitems(itemnumber);
dt.Columns.Add("LineTotal", typeof(double));
dt.Columns["Linetotal"].Expression = "[unitprice] * [quantity]";

dgv.DataSource = dt;

private void dgv_WhatEventToUse???(object sender, DataGridViewCellEventArgs e)
{
//method to iterate the rows of the datagridview, and sum linetotal column
}

必须有一些事件在计算列的值更改时触发。

最佳答案

看来您的问题是因为您的计算列是 DataTable 的一部分而不是 DataGridView 的一部分。我不确定 DataGridView 是否会在 dgv 的基础数据源发生更改时公开事件。有 DataGridView.DataSourceChanged 事件,但它似乎只在您实际设置 DataSource 属性时触发,而不是在 DataTable 随您的计算更改自身时触发。

如果您想让它在不更改代码结构的情况下工作,请订阅 DataTable 的 RowChanged 事件,您可以扫描 dgv 并从那里更新您的标签。这不完全是一个干净的解决方案,但它确实有效。如果可以的话,我会考虑切换到 DataGridView 中的计算列。

关于c# - winforms datagridview计算字段更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1257674/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com