日期:2014-05-18  浏览次数:20522 次

B/S 中,这样的数据结构怎样生成树TreeView? 大家给个思路。
大家好:
我的表结构是一个字段:
UserDepart
**公司\总部\财务部
**公司\总部\经营部
**公司\总部\物资管理处\设备管理\
**公司\项目部\北京项目部\物资办事处\
**公司\项目部\北京项目部\质量管理部\
**公司\项目部\北京项目部\安全管理部\
**公司\直属单位\机械施工分公司\领导成员\
**公司\直属单位\小车队
等等

请问,用以上的“UserDepart”列数据格式怎样生成树型结构?
如:
**公司
          总部
                财务部
                经营部
          项目部
                北京项目部
                              物资办事处
                              质量管理部
                              安全管理部
          直属单位
                机械施工分公司
                        领导成员
                小车队

请给个思路,谢谢大家的支持!


------解决方案--------------------
用邹老大的

--测试数据
DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001 ',NULL , '山东省 '
UNION ALL SELECT '002 ', '001 ', '烟台市 '
UNION ALL SELECT '004 ', '002 ', '招远市 '
UNION ALL SELECT '003 ', '001 ', '青岛市 '
UNION ALL SELECT '005 ',NULL , '四会市 '
UNION ALL SELECT '006 ', '005 ', '清远市 '
UNION ALL SELECT '007 ', '006 ', '小分市 '

--深度排序显示处理
--生成每个节点的编码累计(相同当单编号法的编码)
DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ID,@Level,ID
FROM @t
WHERE PID IS NULL
WHILE @@ROWCOUNT> 0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
FROM @t a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END

--显示结果
SELECT SPACE(b.Level*2)+ '|-- '+a.Name
FROM @t a,@t_Level b
WHERE a.ID=b.ID
ORDER BY b.Sort
/*--结果
|--山东省
|--烟台市
|--招远市
|--青岛市
|--四会市
|--清远市
|--小分市
--*/

------解决方案--------------------
构造2个类
第1个类 就是你这个列 加个Path 就是 公司\总部\经营部 这样的路径
第2个类 TreeNode类 不是treeView 的那个TreeNode

总的想法就是 想办法构造2个对象 产生之间的关系
比较复杂 我刚写了一个


------解决方案--------------------
。。
一。数据库操作
1.substring你的记录集(根据/)
2.将切分出来的数据集合存到临时表(id,pid,name) --这个会吧?
二。cs操作
1。查询临时表数据集,过滤为pid=1 (根)的结果集合
2。写一个递归循环方法,查找符合数据集中符合id=*的记录。。


(如果你的算法够厉害,数据库操作可以不需要)
------解决方案--------------------
你的表不合理,把用到的数据取出来放临时表吧。
------解决方案--------------------
1,
LZ 短消息已回复

2,
同 LS 各位大虾, 希望你的表结构设计的带有外健(指向父节点),这样才好处理,而不是单纯的存储路径