我有一个DatagridView
,用户对其应用过滤器(存储在Datatable.DefaultView.RowFilter
),这意味着屏幕中的行数会改变,在这种情况下,“TotalCost”变量必须改变,但它保持相同的值,因为我申请” Compute-(sum)
“而那个方法正在占尽一切Datatable
。我能做些什么来解决这个问题?我正在使用 32000 多行,所以for loop
如果可以的话,我想避免做一个。
问问题
45 次
1 回答
1
使用CellValidating
DataGridView 事件。
有了它,您可以获得单元格的旧值和新值。
private void myDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
oldValue = (int)myDataGridView["yourColumn", e.RowIndex].Value;
//or
oldValue = (int)myDataGridView[columnIndex, e.RowIndex].Value;
//or
oldValue = (int)myDataGridView[e.ColumnIndex, e.RowIndex].Value;
newValue = (int)e.FormattedValue;
totalCost = totalCost - oldValue;
totalCost = totalCost + newValue;
}
RowsAdded
用户添加行时使用事件
private void myDataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
newValue =(int)myDataGridView["yourColumn", e.RowIndex].Value;
totalCost = totalCost + newValue;
}
UserDeletingRow
当用户删除一行时使用事件
private void myDataGridView_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
oldValue = (int)myDataGridView["yourColumn", e.Row.Index].Value;
totalCost = totalCost - oldValue;
}
于 2021-07-14T20:33:35.050 回答