我需要一个asp.net递归的无限分类源码.网上找了很多但是执行效率太低..

gzw13999 2008-12-26 01:21:45
我需要一个asp.net递归的无限分类源码.网上找了很多但是执行效率太低..

发现一种递归方式高效率的分类方法.谁能说下原理并写出代码..
fid parentid layer parentidlist name
1 0 0 0 分类1
2 1 1 1 分类11
3 0 0 0 分类2
4 2 2 1,2 分类111
5 3 1 3 分类22
6 4 3 1,2,4 分类1111

最终实现
分类1
分类11
分类111
分类1111
分类2
分类22
...全文
123 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sprc_lcl 2008-12-26
  • 打赏
  • 举报
回复
//不能要 dv.Dispose();
sprc_lcl 2008-12-26
  • 打赏
  • 举报
回复
传统的递归方式
我自己以前用的分层绑定,效率高的就不知了

/// <summary>
/// 把一个无限循环数据表绑定数据到一个DropDownList下拉列中,并分层显示
/// </summary>
/// <param name="DropDownList">绑定的控件</param>
/// <param name="dt">需要的dt</param>
/// <param name="firstfather_id">第一项的父ID值</param>
/// <param name="childid">子ID字段名</param>
/// <param name="father_id">父ID字段名</param>
/// <param name="name">显示字段名</param>
/// <param name="needlayer">显示的层数,为负值则不限</param>
/// <param name="firstnull">为定值""</param>
public static void BindDropDownList2(System.Web.UI.WebControls.DropDownList DropDownList, System.Data.DataTable dt, string firstfather_id, string childid, string father_id, string name, int needlayer, string firstnull)
{
if (needlayer > 0 || needlayer < 0)
{
System.Data.DataView dv = dt.DefaultView;
dv.RowFilter = father_id + "=" + firstfather_id;
for (int i = 0; i < dv.Count; i++)
{
DropDownList.Items.Add(new System.Web.UI.WebControls.ListItem(firstnull + dv[i][name].ToString(), dv[i][childid].ToString()));
string firstnull1 = "";
if (firstnull.IndexOf("|--") >= 0)
{
firstnull1 = "  " + firstnull;
}
else
{
firstnull1 = " |--";
}
BindDropDownList2(DropDownList, dt, dv[i][childid].ToString(), childid, father_id, name, needlayer - 1, firstnull1);
}
dv.Dispose();
}
}

gzw13999 2008-12-26
  • 打赏
  • 举报
回复
这个我当然知道了.现在就是需要方法..
冷月孤峰 2008-12-26
  • 打赏
  • 举报
回复
随着层级的加深,效率会越来越低。
龙宜坡 2008-12-26
  • 打赏
  • 举报
回复
mark!
gzw13999 2008-12-26
  • 打赏
  • 举报
回复
求高手给予最终实现方式的原理以及代码
gzw13999 2008-12-26
  • 打赏
  • 举报
回复
parentidlist 和 layer 这个字段好像是控制递归循环的方式.实现高效率递归.
传统的递归方式是
fid parentid name
1 0 分类1
2 1 分类11
3 0 分类2
4 2 分类111
5 3 分类22
6 4 分类1111
这样效率太低

62,268

社区成员

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

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

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

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