0

我有一个可以从 XML 文件加载记录的 gridview。现在,当这个列表被加载到 gridview 中时,那里可能有一些记录有一个子对象说Component插入为new(在我们的数据库中不存在,已经)。

有条件地,在此网格视图中,不允许用户更改任何子field对象,Component 但是如果我们从列表中创建了子对象,我们将允许用户编辑子对象的某些字段,例如Carrier& Info

我的问题是如何允许编辑器仅在网格中显示某些行,在这种情况下,子对象的行为Component.Inserted = true

4

2 回答 2

0

我建议你通过下面的 DevExpress 线程:

如何有条件地阻止编辑单个网格单元

根据条件使网格单元格只读的最佳方法是处理GridView.ShowingEditor事件,并在需要阻止编辑时将e.Cancel参数设置为 true。

例子:

// disable editing  
private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) {  
    GridView view = sender as GridView;  
    if(view.FocusedColumn.FieldName == "Region" && !USCanada(view, view.FocusedRowHandle))  
        e.Cancel = true;  
}

参考:
XtraGrid 条件编辑

于 2019-12-06T12:48:33.243 回答
0

我试图处理ShowingEditorgridview的事件如下:

private void gridViewRecords_ShowingEditor(object sender, CancelEventArgs e)
{
    //gets focused row and casts it into my object
    MyObject mo = (MyObject) gridViewRecords.GetRow(gridViewRecords.FocusedRowHandle);

    //check for my condition
    if(!(mo.Component.Inserted))
    {

          //intended cols, whose editor I want to block
          if(gridViewRecords.FocusedColumnName == "colCarrier"){
               e.Cancel = true;
          }
          else
          if(gridViewRecords.FocusedColumnName == "colInfo"){
               e.Cancel = true;
          }

    }
}
于 2019-12-05T10:12:01.717 回答