DevExpress XtraGrid-在列1更改时更改/禁用列2中的单元格
我在XtraGrid中有两个专栏。当Column1的值更改时,我想执行一些逻辑,可能会更改Column2的值并禁用Column2。您可以在下面看到我的代码,但我有3个问题:DevExpress XtraGrid-在列1更改时更改/禁用列2中的单元格,devexpress,xtragrid,Devexpress,Xtragrid,我在XtraGrid中有两个专栏。当Column1的值更改时,我想执行一些逻辑,可能会更改Column2的值并禁用Column2。您可以在下面看到我的代码,但我有3个问题: 我的CustomRowCellEdit函数似乎在后台不间断地运行 第2列上的SetRowValue似乎不会真正出现,除非我单击远离该行的位置;我需要在第1列更改后立即进行更改 如何在IF块中禁用 我已将以下事件添加到网格中: this._myGridView.CustomRowCellEdit += new Dev
this._myGridView.CustomRowCellEdit +=
new DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventHandler(
this.myGridView_CustomRowCellEdit);
活动内容如下:
private void myGridView_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
{
if (e.Column.FieldName == "Column1" && e.RowHandle >= 0)
{
GridView gv = sender as GridView;
string value1 = gv.GetRowCellValue(e.RowHandle, gv.Columns["Column1"]).ToString();
if (value1 == "something")
{
gv.SetRowCellValue(e.RowHandle, gv.Columns["Column2"], someOtherValue);
// I'd like to disable Column2 in this IF logic.
}
}
}
在DevX文档中,有一个关于CustomRowCellEdit事件的注释 由于XtraGrid控件的基础结构,CustomRowCellEdit事件会在每次刷新单元格时频繁激发。因此,不要为CustomRowCellEdit事件处理程序实现复杂的逻辑 考虑到您声明的需求,我的方法是使用CellValueChanged事件,而不是CustomRowCellEdit。您的处理程序可以这样说
private void myGridView_CellValueChanged(object sender, CellValueChangedEventArgs e) {
if (e.Column.FieldName != "Column1") return;
GridView gv = sender as GridView;
if (e.Value == "something") {
gv.SetRowCellValue(e.RowHandle, gv.Columns["Column2"], someOtherValue);
}
}
要使单个单元格在运行时不可编辑,请参阅DevExpress支持站点上的此主题。
.
基本上,您需要处理网格视图的ShowingEditor事件,并使用FocusedRowHandle和FocusedColumn属性决定是否允许编辑当前单元格。要禁用编辑,请将CancelEventArgs的Cancel属性设置为true
希望这有帮助