2015-09-30 44 views
0

我從兩個數據庫中獲取數據,db1,db2,然後現在我想爲生成的datagridview中的數據創建treeView;在datagrid視圖中有:id,name,director,第一個記錄是prim主任,表示他沒有up director(他是owner),每條記錄沒有其他記錄或有更多記錄(child),並且每個孩子有孫子等,這種情況就像在本頁面: I want to create treeview (parent and child and grandchild and so on), depending on xml file 當我用了一段這個片段:根據C#中的DataGridView創建樹狀視圖

void setTree() 
     { 
      { 
      foreach(DataGridViewRow dt in DataGridView1.Rows) 
      { 
      var per = this.DataGridView1.Rows.Cast<DataGridViewRow>().Select(n => new person 
       { 
        name = dt.Cells[0].Value.ToString(), 
        Sex = dt.Cells[1].Value.ToString(), 
        Status = dt.Cells[2].Value.ToString(), 
        child = dt.Cells[3].Value.ToString(), 
        id = dt.Cells[4].Value.ToString(), 
        father = dt.Cells[5].Value.ToString() 
       }).ToList(); 
       var rootTreeNode = GetTree(per, "").First();.........(1) 
       treeView1.Nodes.Add(rootTreeNode); 
      } 
      } 
     } 
       private TreeNode[] GetTree(List<person> per, string parent) 
     { 
      return per.Where(p => p.father == parent).Select(p => 
      { 
       var node = new TreeNode(p.name); 
       node.Tag = p.id; 
       node.Nodes.AddRange(GetTree(per, p.id)); 
       return node; 
      }).ToArray(); 
     } 

現在,當我使用此代碼,我會在標記(1)錯誤,它說:附加信息:序列不包含任何元素。

謝謝

+0

您有語法錯誤,請先修復這些錯誤。 – yvesmancera

+0

其中是語法錯誤? –

回答

0

後在網上幾個讀數,並試圖解決這個小問題,我successed最後。 這是解決方案:

{ 
............. 
TreeNode tn = new TreeNode(this.DataGridView2.Rows[0].Cells[0].Value.ToString());//text 
tn.Tag = this.DataGridView2.Rows[0].Cells[4].Value.ToString();// id 
tn.Name = this.DataGridView2.Rows[0].Cells[5].Value.ToString();//directorid 
       treeView1.Nodes.Add(tn); 
       settree(tn); 
      } 
      public void settree(TreeNode ns) 
     { 
      foreach (DataGridViewRow dr in DataGridView2.Rows) 
      { 
       if (dr.Cells[5].Value.ToString() == ns.Tag.ToString()) 
       { 
        TreeNode tsn = new TreeNode(dr.Cells[0].Value.ToString()); 
        tsn.Tag = dr.Cells[4].Value.ToString(); 
        tsn.Name = dr.Cells[5].Value.ToString(); 
        ns.Nodes.Add(tsn); 
        settree(tsn); 
       } 
      } 
     } 

,我會很高興,如果你從這個代碼中受益。