日期:2014-05-18  浏览次数:20473 次

(50分)求一个递归实现的DropdownList访问(C#)
在项目中遇到这样一个问题,需要在显示一个多层次的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#不太熟练,麻烦高手写一个,我模仿下,辛苦了。


------解决方案--------------------
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
{}

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