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#的一些代码示例来确定选择哪个单元格会帮助我,但我只需要弄清楚这一点。谢谢! !
是的,你是对的,你必须通过实现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;
}
}