如何在TreeView中隐藏根节点?

时间:2014-04-20 08:16:13

标签: c# asp.net

我正在从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);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

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

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