XtraTreeList - 如何设置CheckEdit单元格的值?

时间:2011-08-12 19:40:40

标签: c# .net winforms devexpress xtratreelist

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

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

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

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

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

沿着这些方向:

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

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

答案 1 :(得分:0)

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

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

TreeListNode node;
node.CheckState = CheckState.Checked;

答案 2 :(得分:0)

原来没有一项建议奏效。以下是我为解决问题所做的工作。

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

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

然后,为了设置CheckEdit的值:

TreeListNode[index] = true; //false

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

感谢您的关注和建议。

答案 3 :(得分: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;