【问题标题】:XtraTreeList - How can I set the value of a CheckEdit cell?XtraTreeList - 如何设置 CheckEdit 单元格的值?
【发布时间】:2011-10-26 02:32:41
【问题描述】:

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: c# .net winforms devexpress xtratreelist


    【解决方案1】:

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

    按照这些思路:

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

    我显然建议先检查它是否为 null,然后再尝试分配它,但这只是为了向您展示。

    【讨论】:

    • 首先感谢您的帮助。我没有可供我使用的代码(这是一个工作项目),所以我只能在下周二试用它,但我一定会让你知道它是如何进行的。再次感谢。
    【解决方案2】:

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

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

    TreeListNode node;
    node.CheckState = CheckState.Checked;
    

    【讨论】:

    • 感谢您提供的信息,但我认为它不能完全满足我的需求。我不想为整个列设置 Checked 属性。事实上,我一共有 5 个 CheckEdit 列,我想根据数据库中的某些数据为每个 Node 设置它们的检查状态。所以我不想将节点本身设置为已检查。如果最初的问题有些模棱两可,我深表歉意。
    • @Rachel :仍然设置 CheckState 应该可以满足您的需要。 TreeListNode.CheckState = CheckState.Checked;
    【解决方案3】:

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

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

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

    然后,为了设置 CheckEdit 的值:

    TreeListNode[index] = true; //false
    

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

    感谢您的关注和建议。

    【讨论】:

      【解决方案4】:

      这将起作用:

      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;
      

      【讨论】:

        猜你喜欢
        • 2011-10-25
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        • 2016-01-18
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多