Devexpress c# XtraGrid单格编辑问题

本文关键字:编辑 问题 单格 XtraGrid Devexpress | 更新日期: 2023-09-27 18:10:14

我要为一件可能很简单的事情而烦恼了。

这是使用XtraGrid

假设我有两列和x行,其中一列只是我用columnit属性设置的一个复选框,另一列是一个值。我设置了一个文本框作为第二个值的编辑器。

我如何设置这个,以便如果我选中那一行的复选框,它将允许编辑旁边的值字段中的数字?我将复选框列的allowedit设置为true,但是如果我将复选框checkedchanged事件处理程序中的第二列的allowedit设置为true,它将允许编辑该列中的所有单元格。我没有其他像readonly set之类的属性

如何区分该列中的单个单元格并激活编辑器,同时根据同一行中的复选框将其他单元格保留为只读?我有一种感觉,它涉及使用ShowingEditor和customrowcellledit,但我不确定如何设置。

谁能告诉我为了完成这个我需要做些什么?我需要为这个列的readonly/allowedit属性设置什么,我需要在那些ShowingEditor/customrowcellledit方法中设置什么来做到这一点?我在这方面很新,所以这可能是一个非常基本的问题,但我需要一些帮助!c#的一些代码示例来确定选择哪个单元格会帮助我,但我只需要弄清楚这一点。谢谢! !

Devexpress c# XtraGrid单格编辑问题

是的,你是对的,你必须通过实现ShowingEditor事件来管理这个

用于演示的代码:

首先我将gridview1键合到RandomClass

public class RandomClass
{
    public bool AllowEdit { get; set; }
    public string Text { get; set; }
    public randomClass()
    {
        this.AllowEdit = true;
        Text = "Text1";
    }
}

然后实现ShowingEditor事件,每次gridview1试图打开second column的编辑器时,它都会检查AllowEdit列是否选中并根据它采取行动

private void gridView1_ShowingEditor(object sender, CancelEventArgs e)
{
     if (gridView1.FocusedColumn.FieldName == "Text"
          && !IsAllowingEdit(gridView1, gridView1.FocusedRowHandle))
     {
       e.Cancel = true;
     }
}
private bool IsAllowingEdit(DevExpress.XtraGrid.Views.Grid.GridView view,int row)
{
     try
     {
        bool val = Convert.ToBoolean(view.GetRowCellValue(row, "AllowEdit"));
        return val;
     }
     catch
     {
         return false;
     }
 }