我准备把头发拉出去,这可能很简单。
这是使用XtraGrid。
假设我有两列和x行,包含在一列中只是我用columnedit属性设置的复选框,另一列是值。我有一个文本框设置为第二个值的编辑器。
如何设置此项,以便在选中该行的复选框时,它会允许编辑旁边的值字段中的数字?我对allowed列设置了allowit设置为true,但是如果我将第二列的allowedit设置为true,例如复选框checkedchanged事件处理程序,它将允许编辑该列中的所有单元格。我没有其他属性,如readonly set或类似的东西。
如何区分该列中的单个单元格并激活编辑器,同时根据同一行中的复选框将其他单元格保持为只读?我有一种感觉它涉及使用ShowingEditor和CustomRowCellEdit,但我不知道如何设置它。
有人可以带我完成我需要做的事情才能完成这项工作吗?我需要为此列的readonly / allowedit属性设置什么设置?我需要在那些DisplayEditor / CustomRowCellEdit方法中执行此操作?我真的很陌生,所以这可能是一个非常基本的问题,但我需要一些帮助! C#的一些代码示例用于确定选择哪个单元格对我有帮助,但我只需要弄清楚这一点。感谢!!!
答案 0 :(得分:2)
是的,你是对的,你必须通过实施ShowingEditor
事件
演示porpuses的代码:
首先我将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;
}
}