2016-03-31 5 views
2

Ich versuche, Objekte zur Baumstruktur von deexpress hinzuzufügen. Leider füllt es die Zellen nicht automatisch, sondern zeigt in jeder Zelle den Objektnamen an.Develexpress Treelist nur Objekte hinzufügen Objektname anzeigen

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 

End Class

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 

Und ich hinzufüge, die Objekte von dieser Linie:

tlEditor.Nodes.Add(TempItem1.ToArray) 

Ich habe zwei Spalten in meinem treelist. Für die erste Spalte habe ich den FieldName auf Name gesetzt und die zweite Spalte Ich habe den Feldname auf Wert Wert der Baumstruktur festgelegt, um den Wert der Eigenschaften in der TempItem-Klasse anzuzeigen. In diesem Fall sollte die Baumstrukturliste anzeigen:

Funktion | 0 Merkmal2 | 1

Aber stattdessen zeigt WindowsApplication1.TempItem in jeder Zelle. Wie

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

Was habe ich falsch gemacht?

Antwort

1

Ihre Liste enthält neue Instanzen der Klasse TempItem. Ich würde stattdessen ein Array von Strings verwenden.

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); 

Dann eine Funktion erstellen, die die Liste nimmt und füllt ein TreeNodeCollection mit den Werten in der Liste: Sie können Ihre Klasse für diese oder richten Sie eine Liste, wie das Beispiel unten (C#) ändern

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]; 
    } 

Dann rufen Sie einfach mit Ihrem Createlist Parameter:

CreateList(tmplist, treeView1); 
Verwandte Themen