构造TREEVIEW问题

SL0413 2008-07-15 06:42:34
kmdm kmmc
----------------------- -------------
1001 库存现金
1002 银行存款
100201 建行
100202 美元存款经常户
100203 工行
1012 其他货币资金
101207 保函押金
10120701 建行永定路支行
10120702 浦发银行永定路支行
1013 备用金
101301 经理办公室
101302 综合计划处
101303 财务处

根据上面的数据结构(数据结构不能改变),构造一个TreeView
小弟有几个难点不知道怎么解决,希望高手帮忙指点一下。

1、如果根据kmdm来判断是否为根节点。(不可以根据KMDM为4位就确认为根节点,1001可是为101,同样他的下级可以为100101或者为1001001)
2、如果根据kmdm来判断上级节点是哪个。








...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SL0413 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bobyisland 的回复:]
如果kmdn的长度 <=4就认为是根节点啊~~

取kmdm得前3为或者2位后,就是他父节点的kmdm。

我不明白的一点就是: 如果1001成为101后,他下面的子节点也会变成10101吗? 还是101001?我觉得变是可以的。但要变都要变,否则很麻烦的。
[/Quote]


这么说吧,

每个级别的代码长度不确,也就是说一级有可能是4位,也有可能是3位
同样二级有可能是2位也有可能是3位,

但整个表中的记录是统一的。

可以是下面这样的
kmdm kmmc
----------------------- -------------
1001 库存现金
1002 银行存款
100201 建行
100202 美元存款经常户
100203 工行
1012 其他货币资金
101207 保函押金
10120701 建行永定路支行
10120702 浦发银行永定路支行
1013 备用金
101301 经理办公室
101302 综合计划处
101303 财务处

也可能是这样的
kmdm kmmc
----------------------- -------------
101 库存现金
102 银行存款
10201 建行
10202 美元存款经常户
10203 工行
112 其他货币资金
11207 保函押金
1120701 建行永定路支行
1120702 浦发银行永定路支行
113 备用金
11301 经理办公室
11302 综合计划处
11303 财务处

还可能是

kmdm kmmc
----------------------- -------------
1001 库存现金
1002 银行存款
1002001 建行
1002002 美元存款经常户
1002003 工行
1012 其他货币资金
1012007 保函押金
101200701 建行永定路支行
101200702 浦发银行永定路支行
1013 备用金
1013001 经理办公室
1013002 综合计划处
1013003 财务处


不知道我表述的是否清楚





SL0413 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzyhuian06142 的回复:]
你的这些数据是在数据库中的吗
[/Quote]


是在数据库中
SL0413 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lf44785170 的回复:]
我是这样做,用一个表保存它们的属性

树索引值 根节点 二级 三级 ... 名称
1 1002 银行存款
2 1002 100201 建行
3 1002 100202 美元存款经常户
4 1002 100203 10020301 ...
...

创建目录树的时候,保存索引
定位判断在表进行,然后通过索引打开目录树
[/Quote]


数据结构不能改变
bobyisland 2008-07-15
  • 打赏
  • 举报
回复
我遇到的情况和楼主很类似:

在数据库中有个表

Level Name
01 一年级
02 二年级
03 三年级
0100 一年级一班
0101 一年级二班
0200 二年级一班
0201 二年级二班
0300 三年级一班

只要解析Level字段就很好判断结点之间的关系。
bobyisland 2008-07-15
  • 打赏
  • 举报
回复
如果kmdn的长度<=4就认为是根节点啊~~

取kmdm得前3为或者2位后,就是他父节点的kmdm。

我不明白的一点就是: 如果1001成为101后,他下面的子节点也会变成10101吗? 还是101001?我觉得变是可以的。但要变都要变,否则很麻烦的。

lf44785170 2008-07-15
  • 打赏
  • 举报
回复
我是这样做,用一个表保存它们的属性

树索引值 根节点 二级 三级 ... 名称
1 1002 银行存款
2 1002 100201 建行
3 1002 100202 美元存款经常户
4 1002 100203 10020301 ...
...

创建目录树的时候,保存索引
定位判断在表进行,然后通过索引打开目录树
zzyhuian06142 2008-07-15
  • 打赏
  • 举报
回复
你的这些数据是在数据库中的吗
zzyhuian06142 2008-07-15
  • 打赏
  • 举报
回复
、如果根据kmdm来判断上级节点是哪个。
TreeNode.Prenode好象是这个

110,006

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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