Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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# 如何在TreeView中隐藏根节点?_C#_Asp.net - Fatal编程技术网

C# 如何在TreeView中隐藏根节点?

C# 如何在TreeView中隐藏根节点?,c#,asp.net,C#,Asp.net,我正在从DB表动态构建节点。当我运行代码时,根节点也会出现,不会消失。我什么都试过了。在互联网上查找,但尚未找到解决此问题的具体方法 我的ProductCategory表如下所示 下面是.cs文件中的代码 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GetTreeViewItems(); } }

我正在从DB表动态构建节点。当我运行代码时,根节点也会出现,不会消失。我什么都试过了。在互联网上查找,但尚未找到解决此问题的具体方法

我的ProductCategory表如下所示

下面是.cs文件中的代码

  protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            GetTreeViewItems();
        }
    }

    private void GetTreeViewItems()
    {

        string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
        SqlConnection con = new SqlConnection(cs);
        SqlDataAdapter da = new SqlDataAdapter("select * from ProductCategories where ParentId in (0,1,2)", con);
        DataSet ds = new DataSet();
        da.Fill(ds);

        ds.Relations.Add("ChildRows", ds.Tables[0].Columns["ProductCategoryId"],
            ds.Tables[0].Columns["ParentId"]);



        foreach (DataRow level1DataRow in ds.Tables[0].Rows)
        {
            if (string.IsNullOrEmpty(level1DataRow["ParentId"].ToString()))
            {
                TreeNode parentTreeNode = new TreeNode();
                parentTreeNode.Text = level1DataRow["ProductCategoryName"].ToString();
                parentTreeNode.Value = level1DataRow["ProductCategoryId"].ToString();
                parentTreeNode.NavigateUrl = "?catid=" + level1DataRow["ProductCategoryId"].ToString();

                int i = (int)level1DataRow["ProductCategoryId"];
                GetChildRows(level1DataRow, parentTreeNode);

                    TreeView1.Nodes.Add(parentTreeNode);
            }
        }
    }

    private void GetChildRows(DataRow dataRow, TreeNode treeNode)
    {
        DataRow[] childRows = dataRow.GetChildRows("ChildRows");
        foreach (DataRow row in childRows)
        {
            TreeNode childTreeNode = new TreeNode();
            childTreeNode.Text = row["ProductCategoryName"].ToString();
            childTreeNode.Value = row["ProductCategoryId"].ToString();
            childTreeNode.NavigateUrl = "?catid=" + row["ProductCategoryId"].ToString();


            treeNode.ChildNodes.Add(childTreeNode);

            if (row.GetChildRows("ChildRows").Length > 0)
            {
                GetChildRows(row, childTreeNode);
            }
        }
    }
}

你不能这样做。我希望一个节点是不可见的,但它是要显示的子节点,那么唯一的方法是不添加根节点,而是将子节点添加为根节点


要么这样,要么编写自己的TreeView控件。

好吧,我也发现这是不可能的。如果我想禁用根链接怎么办。我是说,如果我让它变得不可接近。有办法吗?根据控件的不同,您可以将Enabled设置为False。这将产生什么样的影响(对节点和子节点)取决于您使用的控件。听起来最好的方法不是添加层次结构的根,而是将其子节点添加为TreeView根节点(并将其子节点添加为子节点)。TreeView通常不限于一个根节点。