我正在使用 DevExpress GridControl,我在其中绑定(bind)了数据并且一列包含 bool 标志 IsOrdered。我在 SimpleGridView 上注册了名为 CellValueChanged 的事件,因为当我的检查字段(即 IsOrdered 值)发生更改时,我想执行一些操作.
在订阅者方法中,我检查 if (e.Column.FieldName == "IsOrdered")
然后执行这些操作。
问题是 CellValueChanged 事件在我选中复选框(通过双击)并单击其他地方后才会引发。不幸的是,这在这里导致了一个烦人的问题:例如,当我在那个网格中有我的行时 IsOrdered 设置为 false(未选中),我选中此复选框并立即取消选中它,然后我单击某处否则,事件也会被引发。因为我认为在这种情况下不应引发该事件,因为该 IsOrdered 值实际上并未更改(它是 false,然后是 true,最后又是 false)。
也许有一些方法可以改变这种默认行为?什么是完美的是在复选框被选中/取消选中后立即引发 CellValueChanged 事件,而不必单击其他地方的复选框来引发事件。
还有一个名为 CellValueChanging 的事件,但它没有解决我的问题,因为该事件实际上是在 IsOrdered 的值更改之前引发的,但在我的订阅者方法 我需要知道该字段的值是否更改为 true 或 false。
我将不胜感激 :)。
最佳答案
您可以使用 GridView.CellValueChanging
事件,在此事件中您可以使用 ColumnView.SetRowCellValue
更改字段的值方法。
这是示例:
private void gridView1_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
if (e.Column.FieldName == "IsOrdered")
{
gridView1.SetRowCellValue(e.RowHandle, e.Column, e.Value);
//Do your other staff here.
}
}
关于c# - 双击后 Devexpress GridContol 检查值变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30122367/