Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据C中的DataGridView创建Treeview_C#_Database - Fatal编程技术网

C# 根据C中的DataGridView创建Treeview

C# 根据C中的DataGridView创建Treeview,c#,database,C#,Database,我从两个数据库db1和db2中获取数据,然后现在我想为结果datagridview中的数据创建treeView;在datagrid视图中有:id、name、director,第一条记录是prim director,这意味着他没有向上的director他是所有者,每条记录没有其他记录或有更多的recordschild,每个子记录都有孙子,等等,此场景与此页面中的情况类似: 当我在一些之后使用此代码段时: void setTree() { {

我从两个数据库db1和db2中获取数据,然后现在我想为结果datagridview中的数据创建treeView;在datagrid视图中有:id、name、director,第一条记录是prim director,这意味着他没有向上的director他是所有者,每条记录没有其他记录或有更多的recordschild,每个子记录都有孙子,等等,此场景与此页面中的情况类似: 当我在一些之后使用此代码段时:

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();
        }
现在,当我使用这段代码时,我在mark1处得到错误,它说:附加信息:序列不包含任何元素


谢谢你

在网上阅读了几篇文章并试图解决这个小问题后,我终于成功了。 这就是解决方案:

{
.............
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);
                }
            }
        }

如果您能从这段代码中获益,我将非常高兴。

如果您有语法错误,请先修复这些错误。语法错误在哪里?