在项目中遇到这样一个问题,需要在显示一个多层次的DropdownList
形式如下:
       A
       --A1
       --A2
       B
       --B2
       ---B23
从数据库中取得不同层次的(level=0,1,2)分成3层
请用C#语言实现下,谢谢!我已经通过查询取得level=0的所有记录,下面如何通过递归取得它的所有子节点,如A的子节点 A1 A2(A1,A2的parentid为A的id) 想写一个for循环然后通过层次一次加上横线-
我C#不太熟练,麻烦高手写一个,我模仿下,辛苦了。

解决方案 »

  1.   

    public void DropDataBind()
    {
    string Sql="select province,provinceid from province";
    SqlDataAdapter da=new SqlDataAdapter(Sql,cn);
    DataSet ds=new DataSet();
    da.Fill(ds);
    for(int i=0;i<ds.Tables[0].Rows.Count;i++)
    {
    ListItem list=new ListItem();
    list.Text=ds.Tables[0].Rows[i]["province"].ToString();
    list.Value=ds.Tables[0].Rows[i]["provinceid"].ToString();
    this.DropDownList1.Items.Add(list);
    string sql="select city,cityid from city where father="+ds.Tables[0].Rows[i]["provinceid"].ToString();
    AddChild(sql,1);
    }
    }
    public void AddChild(string Sql,int j)
    {
    SqlDataAdapter da=new SqlDataAdapter(Sql,cn);
    DataSet ds=new DataSet();
    da.Fill(ds);
    string Child="";
    for(int n=0;n<j;n++)
    {
    Child+="---";
    }
    for(int i=0;i<ds.Tables[0].Rows.Count;i++)
    {
    ListItem list=new ListItem();
    list.Text=Child+ds.Tables[0].Rows[i][0].ToString();
    list.Value=ds.Tables[0].Rows[i][1].ToString();
    this.DropDownList1.Items.Add(list);
    try
    {
    j++;
    string sql="select area,areaid from area where father="+ds.Tables[0].Rows[i]["cityid"].ToString();
    AddChild(sql,j);
    }
    catch
    {}

    }
    }
      

  2.   

    如果只有第三层,就把try
    {
    string sql="select area,areaid from area where father="+ds.Tables[0].Rows[i]["cityid"].ToString();
    j=2;
    AddChild(sql,j);
    }
    catch
    {}
      

  3.   

    <option value="110000">北京市</option>
    <option value="110100">---市辖区</option>
    <option value="110101">------东城区</option>
    <option value="110102">------西城区</option>
    <option value="110103">------崇文区</option>
    <option value="110104">------宣武区</option>
    <option value="110105">------朝阳区</option>
    <option value="110106">------丰台区</option>
    <option value="110107">------石景山区</option>
    <option value="110108">------海淀区</option>
    <option value="110109">------门头沟区</option>
    <option value="110111">------房山区</option>
    <option value="110112">------通州区</option>
    <option value="110113">------顺义区</option>
    <option value="110114">------昌平区</option>
    <option value="110115">------大兴区</option>
    <option value="110116">------怀柔区</option>
    <option value="110117">------平谷区</option>
    <option value="110200">---县</option>
    <option value="110228">------密云县</option>
    <option value="110229">------延庆县</option>
    我的效果是这样的...
      

  4.   

    建议尝试:
    1.取出全部内容
    2.遍历一下给内容前加层次前缀(---或者空格等)
    3.使用DataTable.Select或DataView的fliter来排序
    4.绑定到dropdownlist
      

  5.   

    感谢Santiago,你的代码对我很有帮助,真的很感谢!
      

  6.   

    数据库设计成这样:
    ID   PIDA    null
    A1    A
    A2    AB    null
    B1    B
    B2    B
      
    ---------------------------------------------
    EMail:[email protected] 请给我一个与您交流的机会!