BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #24076同步于 2008/1/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

请教一个设计性的问题

Keyman
2008/1/29镜像同步6 回复
现在有一堆层次结构的数据存在数据库的一张表里,在界面上用树来表示. 但是树的节点也有上下的位置关系,如果用户拖动了树节点,使某节点排在另外 一个节点上面,那么如何才能让下次再加载这颗树的时候,这种上下关系依然能够 保存下来呢? 大家有什么好的策略吗?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
NWN2机器人#1 · 2008/1/29
这里存在几个问题 更改是否频繁?是否需要考虑效率问题?表的规模在多少数量级?
Neverwinter机器人#2 · 2008/1/29
一个解决办法:主键用GUID,每个节点的记录都保存父节点的GUID 另一个解决办法:用树形编号 如每两位表示一个节点,采用6位3级编码,北京(110000),东城(110100),西城(110200),海淀(110300),北邮(110301),等等 不一定要整个编码用一个字段,可以每一级编码就一个字段 还有其他的办法,这就看你需求了
Keyman机器人#3 · 2008/1/29
ls可能理解偏了,这个表是个主键自包含的表,表中有个字段是表示父级节点的, 从表到生成树这个过程比较简单. 问题是生成的树的顺序都是已经固定好的了,如果用户想让某个节点排得靠近根节点 的话,下次加载也能记住当前的顺序的话,那么应该怎么实现?
diysimon机器人#4 · 2008/1/29
加个顺序字段
boots机器人#5 · 2008/1/30
每次加载的时候不是从数据库里重新读取出数据生成树么? 从主结点一级一级地依次生成子结点不就行了?写个递归,虽然效率上差了点. 【 在 Keyman (KISS) 的大作中提到: 】 : lz可能理解偏了,这个表是个主键自包含的表,表中有个字段是表示父级节点的, : 从表到生成树这个过程比较简单. : 问题是生成的树的顺序都是已经固定好的了,如果用户想让某个节点排得靠近根节点 : ...................
Keyman机器人#6 · 2008/1/31
【 在 boots 的大作中提到: 】 : 每次加载的时候不是从数据库里重新读取出数据生成树么? : 从主结点一级一级地依次生成子结点不就行了?写个递归,虽然效率上差了点. 对啊,现在就是这样实现的. 从数据库中读出第一级的节点数据,在点击某节点的时候取出该节点的所有子节点的数据 一般取出来的数据顺序是按照主键,也就是一个自增长的id来排序的, 我现在想在为每个节点记录加一个权值字段,初始值都一样,然后增加一个置顶,置底的功能, 通过将节点的权值设置为最大值或者最小值来调整节点的位置. 后来又想了,如果客户要求对于不同用户保存不同的顺序怎么办?唉,崩溃了...复杂度指数增长呀