树状图 无限级 递归

sun378820871 2013-04-09 03:14:50
要做一个活的导航

代码如下:
string myTree = "{";

JLUserBLL bll = new JLUserBLL();

DataTable table = bll.PassValue();

DataView dv = new DataView(table);

string loginUser = this.loginUser.username;
var list = bll.GetMenu(loginUser);
string tree = "";
foreach (var item in list)
{
dv.RowFilter = "id=" + item.ChannelId + "";

tree = TreeDataBind(dv);
}
tree = tree.Substring(0, tree.Length - 1);
tree += "}";


public string TreeDataBind(DataView dv)
{

foreach (DataRowView drv in dv)
{

myTree += "["; //创建一个新的节点
//为新的借点设置属性
myTree += drv["DeptName"].ToString() + ",";
myTree += drv["ParentId"].ToString() + ",";
myTree += drv["id"].ToString() + ",";
myTree += drv["DeptLevel"].ToString();
myTree += "],";
//过滤数据视图 父类id = 上一级的tid
dv.RowFilter = "id=" + drv["ParentId"].ToString();
//自己调用自己
de.Add(dement);

TreeDataBind(dv);
}
de.OrderBy(e => e.DeptLevel);


return trees;
}

问题是它是倒着排序departLevel shi 3 2 1 并且 如何传给前台接收,前台如何接收 求代码! 在线等
...全文
277 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
clark_kidd 2013-04-10
  • 打赏
  • 举报
回复
你要排序出什么效果啊?数据源输出看不懂哦
clark_kidd 2013-04-10
  • 打赏
  • 举报
回复
这个递归看的不是太懂啊 你每次处理了当前深度的第一个节点后,就跑去找下一个层级了啊?
md5e 2013-04-10
  • 打赏
  • 举报
回复
Department的类加上一个属性public Department[] Child 或 public List<Department> Child
sun378820871 2013-04-09
  • 打赏
  • 举报
回复
如何 写出层结构的数据

foreach 循环里如何写出带结构的数据 例如json
md5e 2013-04-09
  • 打赏
  • 举报
回复
public string TreeDataBind(DataTable ds, string pid, int leve) { string item = string.Empty; foreach (DataRow row in ds.Select("pid='" + pid + "'", "这里可以填排序")) { item += "{" + string.Format("DeptName:\"{0}\",ParentId:\"{1}\",id:\"{2}\",DeptLevel:\"{3}\",ChildNode:[{4}]" , row["DeptName"] , row["ParentId"] , row["id"] , leve , TreeDataBind(ds, row["id"].ToString(), leve + 1) ) + "},"; } return item.TrimEnd(','); } //调用 DataTable ds=db.GetDataTable("select * From tb"); string tree = "{" + string.Format("Tree:[{0}]", TreeDataBind(ds, "", 0)) +"}"; Response.Write(tree); Response.End();
sun378820871 2013-04-09
  • 打赏
  • 举报
回复
现在就是没层级。我试着 编译出层级。可是没写出来。
md5e 2013-04-09
  • 打赏
  • 举报
回复
你要转成json输出?
  • 打赏
  • 举报
回复
不好意思,{和[用反了,能看懂啊
  • 打赏
  • 举报
回复
前台接收的问题,你的意思是,前台显示树的逻辑还没写好,不知道怎么根据你的数据格式显示树吗?如果是,我建议不要用这种扁平的数据表示([地产产业,0,11,1]),这样子到了前端还是费劲。直接组成层级结构,如: { [name:上海公司,child:{[name:业务部,child:null],[name:人事部,child:null]}], [name:北京公司], ... }
  • 打赏
  • 举报
回复
一张表,表示树 Id pId Name Level 0 null 总公司 1 1 0 分公司一 2 2 0 分公司二 2 3 2 业务部 3 遍历时, int level=1; do { 选出level=1的行集合,遍历; 每一行取出ID,搜索表中pId=ID的行,遍历,加到结果集中; 递归所有层级; level++; } while(level选出的行数为0停止)
啊兵 2013-04-09
  • 打赏
  • 举报
回复
winform吗

62,046

社区成员

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

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

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

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