树视图 如何做到这一点

本文关键字:这一点 何做 视图 | 更新日期: 2023-09-27 18:24:44

   I have create table in database name"Group" contains ID,Rank,Name like this:
    ID   RANK    NAME
    1     A      Main
    2     A1     Departments
    3     A2     Companies
    4     A3     Usres
    5     I      Invoice
    6     T      Tools
    7     T1     ChangPswd
    8     T2     ChangLanguage
when I try this query  get the same result

如何使"A+T"是父节点,(A1,A2,A3,T1,T2(是子节点?(在同一表中( 选择等级,姓名, Rank(( over (按 Rank 排序( 作为 Rank 从集团 按ID排序;

//in formLoad
{
DataTable dt;
DBAccess db = new DBAccess();
dt = db.ExcuteDataTable("SELECT Name FROM Group")
 foreach (DataRow dr in dt.Rows)
        {
            parentNode = Tree.Nodes.Add(dr["Name"].ToString());
        }
how can i make 'A+T'is parent and (A1,A2,A3,T1,T2) is childnode? (in the same table)

树视图 如何做到这一点

我认为

你可以用硬编码来做到这一点,我不同意,取而代之的是,你可以添加另一列名为 parent 来标识每个孩子的父母。

但是回答你的问题

您可以先创建 A,T 节点,然后使用子字符串查找其子节点

foreach (DataRow dr in dt.Rows)
{
   if(dr["Name"].ToString().Trim() != "A" && dr["Name"].ToString().Trim() != "T")
   {
    if(dr["Name"].ToString().SubString(1,1) == "A")
    {
            parentNodeA = Tree.Nodes.Add(dr["Name"].ToString());
    }
    else if(dr["Name"].ToString().SubString(1,1) == "T")
    {
            parentNodeT = Tree.Nodes.Add(dr["Name"].ToString());
    }
  }
}

或者,如果您以 A,T 为例,并且您可以拥有更多父节点,例如 I,F,L,您可以使用它们的长度来识别父节点,

Private Sub populateNodes(dt as DataTable)
{
  populateParentNodes(dt);
  foreach (DataRow dr in dt.Rows)
  {
     if(dr["Name"].ToString().Trim().Lenght() > 1)
     {
      Tree.Nodes.FindNodeByName(dr["Name"].ToString().SubString(1,1)).Add(dr["Name"].ToString());
     }
  }
}
Private Function populateParentNodes(DataTable dt)
{
  foreach (DataRow dr in dt.Rows)
  {
     if(dr["Name"].ToString().Trim().Lenght() == 1)
     {
        Tree.Nodes.Add(dr["Name"].ToString());
     }
  }
}

我没有测试代码,因为我是在 IDE 中编写的,但我希望它对您有所帮助

问候

相关文章: