保存行顺序

我们先进行一个测试:

1、打开CaseStudy目录下的示例文件: 折叠模式.Table

2、选择"物料清单C"表,打开折叠模式,按下图展开相关节点,并选择M04节点:

3、执行"折叠行"菜单下的"上移行"命令,将M04节点节点移到M03节点之前:

4、现在关闭折叠模式,然后重新开启折叠模式,你会发现M04节点还是在M03节点之下:



你可以再进行一个测试:

选择某节点,插入一个节点,然后重新开启折叠模式,你会发现插入的节点并没有在原来的位置,而是成了父节点的最后一个子节点。

是的,在折叠模式之下,Foxtable默认并不会存储行的先后顺序。

如何保存行的顺序

还记得我们在"指定排序列"这一节,建议你将排序列名设置为"sysgrdtreesort"吗?

是的,这就是解决问题的钥匙:

1、打开CaseStudy目录下的示例文件: 折叠模式.Table

2、选择"部门表"表,按下图所示设置折叠模式,注意将排序列设置为"sysgrdtreesort":



3、选择"深圳公司"节点:

4、执行"折叠行"菜单下的"上移行"命令,将"深圳公司"节点移到"广州公司"节点之前。

5、现在关闭折叠模式,然后重新打开折叠模式,你会发现这次"深圳公司"节点保持在"广州公司"节点之前了:

总结

如果在折叠模式下要保存行的顺序,需要:

1、增加一个名为
"sysgrdtreesort"的整数型列。

2、设置折叠模式的时候,将排序列设置为""
sysgrdtreesort""

由于"
sysgrdtreesort"列存储的是节点顺序,对于最终用户并无意义,所以实际使用的时候,可以将"sysgrdtreesort"列隐藏起来,或者用代码将此列从Table中移除。

注意事项

以下是作为开发者,你应该有所了解的事实:

1、折叠模式下,Foxtable内置的插入行功能已经完全没有意义了,请关闭之。如何关闭插入行功能,请参考:插入行


2、关闭内置的插入行功能,并不会影响折叠模式下插入行功能,只是帮你节省了一列。

3、如果你足够细心,你会发现上图中第2行和第8行的行号颜色变了,这是因为
这两行的"sysgrdtreesort"列的值发生了变化。

4、如果某个节点之下有1000个直属子节点,那么在中间插入一行,会导致500行的"sysgrdtreesort"列的值发生变化,如果是互联网,保存500行可能会需要一点时间。

5、所以你应该做好规划,层层划分数据,减少直属节点的数量,说实话,如果有1000个直属节点,折叠模式的意义又何在?

7、即使真有1000个直属子节点,如果你在第10个节点位置插入一个节点,那么"sysgrdtreesort"列发生变化的只有前10行,如果在990个节点位置插入,那么"sysgrdtreesort"列发生变化的只有后10行。

8、所以极端情况几乎不会存在,但是作为开发者,你应该知道这些的,一来避免极端情况发生,二来如果真的发生了极端情况,你也知道原因。


本页地址:http://www.foxtable.com/webhelp/topics/3722.htm