如何设置CheckEdit单元格的值

本文关键字:CheckEdit 单元格 设置 何设置 | 更新日期: 2023-09-27 18:05:40

我正在使用DevExpress WinForms XtraTreeList控件,并且有几个包含复选框的列,即我已经将列的ColumnEdit属性设置为RepositoryCheckEdit。

如何通过编程方式访问特定CheckEdit单元格的值并将其设置为True/False?

对于文本单元格,我使用TreeListNode[index] = "string"(这与TreeListNode相同)。SetValue(index, "string")),但TreeListNode[index] = boolean似乎对CheckEdit单元格没有影响。

如何设置CheckEdit单元格的值

如果您知道您引用的索引实际上是CheckEdit或RepositoryCheckEdit,则将其转换为这样。

如下:

(TreeListNode[index] as CheckEdit).Checked = true;

我显然建议在尝试分配它之前先检查它是否为null,但这只是为了给您展示。

如果你想为整个列设置Checked属性,看看这个。你必须编写一个易于实现的自定义迭代器。但是迭代的方式有点奇怪。

如果您只想为特定的TreeListNode项设置Checked属性,希望下面的内容有所帮助。

TreeListNode node;
node.CheckState = CheckState.Checked;

结果这两个建议都不起作用。下面是我解决这个问题的方法。

对于要显示CheckBox的列单元格,我没有将ColumnEdit属性设置为RepositoryCheckEdit,而是将列的UnboundType设置为Boolean,即:

TreeListColumn.UnboundType = DevExpress.XtraTreeList.Data.UnboundColumnType.Boolean;

然后,为了设置checkit的值:

TreeListNode[index] = true; //false

PS -我相信其他方法没有工作的原因是RepositoryItemCheckEdit。显然,在这种情况下(我还没有找到)还有其他方法可以设置CheckEdit值。

谢谢你的兴趣和建议。

可以:

DevExNodes.TreeListNode node = this.treeList1.FindNodeByID(nodeId);
DevExColumns.TreeListColumn column = this.treeList1.Columns.ColumnByName(columnName);
node.SetValue(column, true);
this.treeList1.RefreshCell(node, column);

并且在CustomNodeCellEdit(object sender, DevExpress.XtraTreeList.GetCustomNodeCellEditEventArgs e)事件中将默认单元格替换为DevExRepos.RepositoryItemCheckEdit单元格:

DevExRepos.RepositoryItemCheckEdit checkEdit = new DevExRepos.RepositoryItemCheckEdit();
checkEdit.ValueChecked = true;
checkEdit.ValueUnchecked = false;
e.RepositoryItem = checkEdit;