我在Visual Studio 2008的VB.Net项目中使用了DevExpress(10.2)Treelist。我目前有一个TreeList.OptionsBehavior.Editable = True
的treelist。我有两列,第一列是AllowEdit = False
。第二列我通过动作AllowEdit
动态设置ReadOnly
和FocusedNodeChanged
。
在FocusedNodeChange
子例程中,我检查行中是否有特定值,如果是,我将其设置为可编辑或不可编辑。我将其设置为可编辑:
treeList.Columns("field_name").OptionsColumn.ReadOnly = False
treeList.Columns("field_name").OptionsColumn.AllowEdit = True
并将其设置为只读:
treeList.Columns("field_name").OptionsColumn.ReadOnly = True
treeList.Columns("field_name").OptionsColumn.AllowEdit = False
这在一定程度上有效。现在,如果我进入树状列表中的可编辑单元格,则光标会出现并闪烁,因此我知道它是可编辑的,如果我在单元格中进行聚焦不可编辑的行时光标不会闪烁。
然而,即使光标闪烁,我也无法输入。当我点击键盘上的键(数字和字母)时,没有写任何内容。
解决
简单的解决方案。我用来将数据提取到表中的存储过程不包含我试图使其可编辑且不可编辑的特定列的字段。这是因为它是一个新插入/更新的值,与正常情况不同。为了解决这个问题,我获取了null和/或0,它运行正常。
答案 0 :(得分:0)
您使用的代码不太正确。最好的解决方案是处理TreeList的ShowingEditor事件并相应地设置e.Cancel参数。要确定当前单元格,请使用TreeList的FocusedColumn和FocusedNode属性。