树形数据绑定Dropdrownlist控件

liucong303038910 2009-02-05 06:05:04
表结构就是 id category_name parent_id

public void AddTreeDropDrown(int ParentID, DropDownList pLsit)
{
DataTable dt = new CategoryBLL().GetAllCategory();
DataView dvTree = new DataView(dt);
ListItem li;
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[PARENT_ID] = " + ParentID;

foreach (DataRowView Row in dvTree)
{
if (pLsit == null)
{ //添加根节点
li = new ListItem("─»" + Row["Category_Name"].ToString(), Row["ID"].ToString());
DropDownList1.Items.Add(li);
AddTreeDropDrown(Int32.Parse(Row["ID"].ToString()), DropDownList1); //再次递归
}
else
{ //̀添加当前节点的子节点
li = new ListItem("└─»" + Row["Category_Name"].ToString(), Row["ID"].ToString());
DropDownList1.Items.Add(li);
AddTreeDropDrown(Int32.Parse(Row["ID"].ToString()), DropDownList1); //再次递归
}
}

这是一个树形的结构表遍历绑定到Dropdownlist控件上
现在都能遍历出来,我想遍历出来的同时,在前面加个区分级别的字符└─»,级别越深这个字符越长,现在只能区分两种类别
请高手帮忙指点下 谢谢了!
...全文
128 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CutBug 2009-02-05
  • 打赏
  • 举报
回复
有段代码,供参考
/// <summary>
/// 绑定分类下拉列表
/// </summary>
private void BindDropDownList()
{
this.TParentCate.Items.Clear();
this.TParentCate.Items.Add(new ListItem("◇根目录", "0"));
BindDropListByList(UCTreeKMCate1.ThisDataSource);

}


/// <summary>
/// List里过滤根基点
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
private bool FindMatch(KnowlegeCate m)
{
if (m.ParentID == 0)
{
return true;
}
return false;
}



/// <summary>
/// 按层次绑定下拉框
/// </summary>
/// <param name="mList"></param>
/// <param name="mPCateID"></param>
private void BindDropListByList(List<KnowlegeCate> mList)
{
string chrFlag = "┆┄◇";
List<KnowlegeCate> list = mList.FindAll(FindMatch);
foreach (KnowlegeCate m in list)
{
this.TParentCate.Items.Add(new ListItem(chrFlag + m.CateName, m.CateID.ToString()));
RecursionBind(mList, m.CateID, ref chrFlag);
}
}

private void RecursionBind(List<KnowlegeCate> mList,int mCateID,ref string chr)
{
foreach (KnowlegeCate m in mList)
{
if (m.ParentID == mCateID)
{
chr = "┆┄" + chr;
this.TParentCate.Items.Add(new ListItem(chr + m.CateName, m.CateID.ToString()));
RecursionBind(mList, m.CateID, ref chr);
}

}
chr = "┆┄◇";

}
liucong303038910 2009-02-05
  • 打赏
  • 举报
回复
就是不知道再哪儿判断
blackmeit 2009-02-05
  • 打赏
  • 举报
回复
└ ─ » 用viewstate保存 “-”,每次递归加上一个“-”,符号用"└"+viewstate+"»"表示。
liucong303038910 2009-02-05
  • 打赏
  • 举报
回复
liucong303038910 2009-02-05
  • 打赏
  • 举报
回复

62,269

社区成员

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

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

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

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