TreeView如何做到这一点?

时间:2014-09-25 21:44:14

标签: c# sql

   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)是儿童节点? (在同一张表中)     SELECT Rank,Name,           Rank()结束(按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)

1 个答案:

答案 0 :(得分:0)

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

但回答你的问题

您可以先创建A,T节点,然后使用SubString

查找其childNodes
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中写了它但我希望它可以帮助你

问候