要求高手:asp.net treeview无限分级别的代码(不要提供链接,基本都是垃圾)

tongyizh 2007-11-30 09:08:37
该tree将从集团--分公司--部门--人员全部提出来进行浏览并选择操作.表结构如下分为组织表和人员表:
组织表: 组织码 父节点
1 001 A集团公司
2 001001 南京分公司 001
3 001002 成都分公司 001
4
5 001001001 南京分公司总经理办公室 001001
6 001001001003 经营部 001001001
7 001001001004 财务部 001001001
8 001001001005 发展部 001001001

人员表: 组织码
1 001001001003001 孙南 南京分公司总经理办公室经营部 总经理
2 001001001005001 李海 南京分公司总经理办公室发展部 部长
------------------------------------------------------------
希望实现动态无限级别功能,并要求效率.刚转型.net请大家帮忙了.查过很多以前的链接数据结构大多不同没有有价值的.
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bwangel 2007-11-30
  • 打赏
  • 举报
回复
只要知道还有一个递归,就没什么难的
VincentChau 2007-11-30
  • 打赏
  • 举报
回复
呵呵,真不知道该说什么,想问问楼主是从什么语言刚转型DOT NET的。
lazyfish 2007-11-30
  • 打赏
  • 举报
回复
兄弟,你就不知道变通一下吗?做程序员做到这种地步,服了你。

人家告诉你的是思想,不是直接让你把函数拷过去就用。

修改如下:

void BuildTree(TreeNode rootNode, DataTable dtOrgUnit,bool first)
{
TreeNode childNode;
String filter;
if(first){
filter = "Id like '___'";
} else {
filter = string.Format("Id like '{0}___'", rootNode.NodeData)
}
foreach(DataRow row in dtOrgUnit.Select(filter) {
childNode = new TreeNode();
childNode.Text = row["Description"].ToString();
childNode.NodeData = row["Id"].ToString();
rootNode.Nodes.Add(childNode);
BuildTree(childNode,dtOrgUnit,false);
}
}

void BuildOrgUnit()
{
DataTable dtOrgUnit = get data from database;
TreeNode rootNode = new TreeNode();
rootNode.Text = "Org Unit"
treeControl.Nodes.Add(rootNode);
BuildTree(rootNode,dtOrgUnit,true);
}
tongyizh 2007-11-30
  • 打赏
  • 举报
回复
接手的数据库就是这样设计的只有按现有的规划,难道你开发项目可以按自己想法随意做吗?
edmajia01 2007-11-30
  • 打赏
  • 举报
回复
请再加一句:

不要提供答案,基本都是垃圾
Eray 2007-11-30
  • 打赏
  • 举报
回复
神啊,说过了数据结构不一样的吗,我不是用传统pid 和id来表示级别,是以001001 为字符串表示的,再请教.请看看我的说明,谢谢.

不用传统PID和ID就代表你有个性了?是以001001 为字符串就算好的了?别搞笑了。
以字符只不过是利用了编码规则来确定结点结构。这样只适用于辅助。因为这样根本不严谨。

如果实在用这种方法,就是字符串的操作。判断位数。不知道你要人。给你讲什么
chuxue1342 2007-11-30
  • 打赏
  • 举报
回复
没看出你有什么特别。还是子节点,父节点!我博客里面有个!不过加了一个搜索字段:searchid,如果你有兴趣可以看看,也可以留言!
leaohong 2007-11-30
  • 打赏
  • 举报
回复
页面加载-添加根节点

点击某根节点后加载父节点为此节点的一级子接点

以此类推,这样效率比一次加载做无限级遍历高得多
kings2015 2007-11-30
  • 打赏
  • 举报
回复
学习 没用过
tongyizh 2007-11-30
  • 打赏
  • 举报
回复
神啊,说过了数据结构不一样的吗,我不是用传统pid 和id来表示级别,是以001001 为字符串表示的,再请教.请看看我的说明,谢谢.
lazyfish 2007-11-30
  • 打赏
  • 举报
回复
伪代码:

void BuildTree(TreeNode rootNode, DataTable dtOrgUnit,bool first)
{
TreeNode childNode;
String filter;
if(first){
filter = "ParentId is null";
} else {
filter = string.Format("ParentId = '{0}'", rootNode.NodeData)
}
foreach(DataRow row in dtOrgUnit.Select(filter) {
childNode = new TreeNode();
childNode.Text = row["Description"].ToString();
childNode.NodeData = row["Id"].ToString();
rootNode.Nodes.Add(childNode);
BuildTree(childNode,dtOrgUnit,false);
}
}

void BuildOrgUnit()
{
DataTable dtOrgUnit = get data from database;
TreeNode rootNode = new TreeNode();
rootNode.Text = "Org Unit"
treeControl.Nodes.Add(rootNode);
BuildTree(rootNode,dtOrgUnit,true);
}

62,046

社区成员

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

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

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

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