下拉框怎样绑定树形结构数据呢? 求一个自定义控件DropDownList

写个昵称都这么麻烦 2012-06-27 11:37:15
求高手给一个自定义控件
数据库表
Id Name Parent
1 新鲜蔬菜 null
1 新鲜水果 null
1 鲜活水产品 null
1 活的禽畜 null
1 白菜类 1
1 蔬菜 1

其中Parent是外键
...全文
139 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复


private void BindDrpClass() {
IList<Cargos.CargoCategory> car = Global.CargoCategoryManager.Get();
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Parent", typeof(int));
dt.Columns.Add("Description", typeof(string));
foreach (Cargos.CargoCategory c in car) {
dt.Rows.Add(new object[] { c.Id, c.Name,
c.Parent==null?0:c.Parent.Id, c.Description });
}
DropDownList1.Items.Clear();
//DropDownList1.Items.Add(new ListItem("作为根", "0"));
//DataRow[] drs = dt.Select("Parent= "+dt.Rows[0][2]);
for (int i = 0; i < dt.Rows.Count; i++) {
if (Convert.ToInt32(dt.Rows[i][2]) == 0) {
string classid = dt.Rows[i][0].ToString();
string classname = dt.Rows[i][1].ToString();
//顶级分类显示形式
classname = "├" + classname;
DropDownList1.Items.Add(new ListItem(classname, classid));
int sonparentid = int.Parse(classid);
string blank = " ├──";
//递归子分类方法
BindDrpNode(sonparentid, dt, blank);
}
DropDownList1.DataBind();
}
}
private void BindDrpNode(int parentid, DataTable dt, string blank) {
for (int i = 0; i < dt.Rows.Count; i++) {
if (Convert.ToInt32(dt.Rows[i][2]) == parentid) {
string classid = dt.Rows[i][0].ToString();
string classname = dt.Rows[i][1].ToString();
classname = blank + classname;
DropDownList1.Items.Add(new ListItem(classname, classid));
int sonparentid = int.Parse(classid);
string blank2 = " " + blank + "──";
BindDrpNode(sonparentid, dt, blank2);
}
}
}
  • 打赏
  • 举报
回复
自己解决了、擦


private void BindDrpClass() {
IList<Cargos.CargoCategory> car = Global.CargoCategoryManager.Get();
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Parent", typeof(int));
dt.Columns.Add("Description", typeof(string));
foreach (Cargos.CargoCategory c in car) {
dt.Rows.Add(new object[] { c.Id, c.Name,
c.Parent==null?0:c.Parent.Id, c.Description });
}
DropDownList1.Items.Clear();
//DropDownList1.Items.Add(new ListItem("作为根", "0"));
//DataRow[] drs = dt.Select("Parent= "+dt.Rows[0][2]);
for (int i = 0; i < dt.Rows.Count; i++) {
if (Convert.ToInt32(dt.Rows[i][2]) == 0) {
string classid = dt.Rows[i][0].ToString();
string classname = dt.Rows[i][1].ToString();
//顶级分类显示形式
classname = "├" + classname;
DropDownList1.Items.Add(new ListItem(classname, classid));
int sonparentid = int.Parse(classid);
string blank = " ├──";
//递归子分类方法
BindDrpNode(sonparentid, dt, blank);
}
DropDownList1.DataBind();
}
}
private void BindDrpNode(int parentid, DataTable dt, string blank) {
for (int i = 0; i < dt.Rows.Count; i++) {
if (Convert.ToInt32(dt.Rows[i][2]) == parentid) {
string classid = dt.Rows[i][0].ToString();
string classname = dt.Rows[i][1].ToString();
classname = blank + classname;
DropDownList1.Items.Add(new ListItem(classname, classid));
int sonparentid = int.Parse(classid);
string blank2 = " " + blank + "──";
BindDrpNode(sonparentid, dt, blank2);
}
}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧