2016-08-22 3 views
0

Я заселен в TreeView, используя этот код:Как создать иерархию из TreeView

 private void updateTree() 
    { 
     treeView1.Nodes.Clear(); 
     List<TreeNode> graphicsNodes = new List<TreeNode>(); 
     foreach (Graphic graphic in graphics) 
     { 
      List<TreeNode> templateNodes = new List<TreeNode>(); 
      foreach (Template template in graphic.templates) 
      { 
       List<TreeNode> aliasNodes = new List<TreeNode>(); 
       foreach(Alias alias in template.aliases) 
       { 
        aliasNodes.Add(new TreeNode(alias.aliasName + ": " + alias.aliasValue)); 
       } 
       templateNodes.Add(new TreeNode(template.templateName, aliasNodes.ToArray())); 
      } 
      graphicsNodes.Add(new TreeNode(graphic.fileName.Replace(".g", ""), templateNodes.ToArray())); 
     } 
     treeView1.Nodes.Add(new TreeNode("Graphics", graphicsNodes.ToArray())); 
    } 

После манипуляций, переименования и удаления некоторых из этих элементов в TreeView, является возможностью восстановить свою структуру Grapics с новым значения?

Эта структура построена так, что каждый графический имеет множество шаблонов и каждый шаблон имеет множество псевдонимов, этот код определяется следующим образом:

public class Graphic 
{ 
    public string filePath; 
    public string fileName; 
    public List<Template> templates; 

    public Graphic(List<Template> _templates, string fpath, string fName) 
    { 
     templates = _templates; 
     fileName = fName; 
     filePath = fpath; 
    } 
} 
public class Template 
{ 
    public List<Alias> aliases; 
    public string templateName; 
    public Template(string instString, string userdataString) 
    { 
     templateName = (instString.Replace("inst ", "").Replace(" 0 0", "")).Replace(" ",""); 
     aliases = new List<Alias>(); 
     string[] aliasStrings = userdataString.Replace("\"","").Split(new string[1] { "text_alias" }, StringSplitOptions.RemoveEmptyEntries); 
     foreach (string segment in aliasStrings) 
     { 
      if (segment.Contains("userdata")) { continue; } 
      string aliasString = "text_alias" + segment; 
      string[] sections = aliasString.Split('^'); 
      aliases.Add(new Alias(sections[0].Replace("text_alias=", ""), (sections[1].Replace("text_exp_flag=", "") == "1"), sections[2].Replace("alias_new_name=", ""), sections[3].Replace("alias_value=", ""))); //Sorry! 
     } 
    } 
} 
public class Alias 
{ 
    public string aliasName; 
    public string aliasValue; 
    public string newName; 
    public bool expectedFlag; 

    public Alias(string name, bool expected, string nName, string value) 
    { 
     aliasName = name; 
     aliasValue = value; 
     newName = nName; 
     expectedFlag = expected; 
    } 
} 

Если это не так легко достижимо, что было бы лучшим способом подходить к этому под другим углом?

Заранее благодарен!

ответ

-1

Попробуйте это,

for (int i = 0; i <= dst.Tables[0].Rows.Count - 1; i++) 
      { 
       nodeTables.Nodes.Add(dst.Tables[0].Rows[i]["SchemaName"].ToString() + "." + dst.Tables[0].Rows[i]["TableName"].ToString()); 
       nodeTables.Nodes[i].ImageIndex = 2; 
       nodeTables.Nodes[i].Nodes.Add("Columns"); 

       //Filling the Column Names 
       DataSet dstCol = new DataSet(); 
       dstCol = common.GetColumns(Convert.ToInt32(dst.Tables[0].Rows[i]["object_Id"])); 

       for (int col = 0; col <= dstCol.Tables[0].Rows.Count - 1; col++) 
       { 
        nodeTables.Nodes[i].Nodes[0].ImageIndex = 0; 
        nodeTables.Nodes[i].Nodes[0].Nodes.Add(dstCol.Tables[0].Rows[col]["name"].ToString()); 
        nodeTables.Nodes[i].Nodes[0].Nodes[col].ImageIndex = 1; 
       } 
      } 
+0

Любой шанс, что я мог бы быстро объяснение того, что это на самом деле делать, пожалуйста? –

+0

код рисует иерархию из базы данных SQL, объект dst DataSet содержит схему в табличной структуре, в каждой итерации цикла, он рисует schemaname и затем извлекает имя столбца, а затем создает дочерний узел для упорядочивания имен столбцов. Здесь col - columnindex – Angad

+0

. Моя иерархия не находится в sql db –

Смежные вопросы