保存行顺序
我们先进行一个测试:
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、所以极端情况几乎不会存在,但是作为开发者,你应该知道这些的,一来避免极端情况发生,二来如果真的发生了极端情况,你也知道原因。