2016-03-31 52 views
2

我試圖添加對象到devexpress的treelist。但遺憾的是,它不會自動填充單元格,而是在每個單元格中顯示對象名稱。Devexpress Treelist添加對象只顯示對象名稱

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) 

我在樹形列表兩列。對於第一列,我已將字段名稱設置爲名稱,第二列中的字段名稱設置爲期望排列列表顯示TempItem類中屬性的值。在這種情況下,樹列表應該顯示:

特徵| 0 特徵2 | 1

但相反,它在每個單元格中顯示WindowsApplication1.TempItem。像

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

我做了什麼錯?

回答

1

您的列表正在保存Class 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);