1

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

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

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

任何帮助将非常感激。

4

4 回答 4

0

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

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

TreeListNode node;
node.CheckState = CheckState.Checked;
于 2011-08-13T08:43:52.973 回答
0

事实证明,这些建议都没有奏效。这是我为解决问题所做的。

为了让 Column 单元格显示 CheckBox,我没有将 ColumnEdit 属性设置为 RepositoryCheckEdit,而是将 Column 的 UnboundType 设置为 Boolean,即:

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

然后,为了设置 CheckEdit 的值:

TreeListNode[index] = true; //false

PS - 我相信其他方法因为 RepositoryItemCheckEdit 而不起作用。显然,在这种情况下(我无法找到)还有其他方法可以设置 CheckEdit 值。

感谢您的兴趣和建议。

于 2011-08-16T10:35:39.630 回答
0

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

沿着这些思路:

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

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

于 2011-08-12T20:55:22.730 回答
0

这将起作用:

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;
于 2016-01-21T11:50:45.527 回答