【问题标题】:Devexpress Treelist adding objects only show object nameDevexpress Treelist 添加对象仅显示对象名称
【发布时间】:2016-03-31 19:15:07
【问题描述】:

我正在尝试将对象添加到 devexpress 的树列表中。但遗憾的是它不会自动填充单元格,而是在每个单元格中显示对象名称。

Public Class TempItem

Private m_name As String
Private m_value As String


Public Property Name() As String
    Get
        Return m_name
    End Get
    Set(value As String)
        m_name = value
    End Set
End Property
Public Property Value() As String
    Get
        Return m_value
    End Get
    Set(value As String)
        m_value = value
    End Set
End Property

结束类

Private Function TempItem1() As List(Of TempItem)
    Dim tmpList As New List(Of TempItem)

    tmpList.Add(New TempItem("Feature", "0"))
    tmpList.Add(New TempItem("Feature2", "1"))


    Return tmpList
End Function

我正在通过这一行添加对象:

tlEditor.Nodes.Add(TempItem1.ToArray)

我的树形列表中有两列。对于第一列,我将 FieldName 设置为 Name,第二列我将 fieldname 设置为 Value,期望树列表显示属性的值临时项目类。在这种情况下,树列表应显示:

功能 | 0 特色2 | 1

但它会在每个单元格中显示 WindowsApplication1.TempItem。喜欢

WindowsApplication1.TempItem | WindowsApplication1.TempItem WindowsApplication1.TempItem | WindowsApplication1.TempItem

我做错了什么?

【问题讨论】:

    标签: c# vb.net devexpress


    【解决方案1】:

    您的列表包含 TempItem 类的新实例。我会为此使用一个字符串数组。您可以为此修改您的课程,或者只是设置一个列表,如下面的示例(C#):

        public List<string[]> tmplist = new List<string[]>();
                string[] str1 = new string[] { "test1", "1" };
                string[] str2 = new string[] { "test2", "2" };
                tmplist.Add(str1);
                tmplist.Add(str2);
    

    然后创建一个获取列表并使用列表中的值填充TreeNodeCollection 的函数:

        public void CreateList(List<string[]> ars, TreeView tv)
        {
            foreach (var array in ars)
            {
                AddItems(array, 0, tv.Nodes);
            }
        }
    
        void AddItems(string[] array, int index, TreeNodeCollection nodes)
        {
            if (index < array.Length)
            {
                var nextNode = AddValue(array[index], nodes);
                AddItems(array, index + 1, nextNode.Nodes);
            }
        }
    
        TreeNode AddValue(string value, TreeNodeCollection nodes)
        {
            var index = nodes.IndexOfKey(value);
            if (index == -1)
            {
                var newNode = new TreeNode(value) { Name = value };
                nodes.Add(newNode);
                return newNode;
            }
            return nodes[index];
        }
    

    然后只需使用您的参数调用 CreateList:

    CreateList(tmplist, treeView1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      相关资源
      最近更新 更多