用EXT.NET的人都知道里面有个常用的东西数据源Store。数据源有个属性AutoLoad。如果设置为false就是不自动加载数据,需要我们写代码加载数据比如App.TreeStore2.load();
但是!!!!
今天我做了个一个树形的数据源,发现它还是自动取给我加载了数据。找了老半天,都已经达到我的极限了,突然发现在控件上还写了一个属性:RootVisible="false"(是否隐藏跟节点)。这里因为设置的不隐藏,但是结构里面我们又没添加<Root>
<ext:Node></ext:Node>
</Root>所以,它会自动去加载数据源来得到跟节点。
解决办法:去掉RootVisible="false"属性,或者设置为TRUE。或者在控件里添加
<Root>
<ext:Node></ext:Node>
</Root>。
但是这个还是有个小问题。
当RootVisible设置成false的时候如下图:
是的,因为是隐藏的根节点,当我们后台给它添加节点是在根节点下,所以也一起影城了。
当RootVisible设置成true的时候如下图:
大家看到了,那个跟节点Root就是我们上一个截图里添加的节点。这样看着是不是不太好。用户体验度极度不好。
但是如果设置成false它又都不显示了。找了半天才发现,虽然设置成false的时候它不显示,但是实际上是添加到树形控件里的。那我们试试加载完后如果展开根节点是不是能够看到?
/加载完后展开根节点
function expand(tree, root, object) {
if (root.raw["text"] == "已审核物资目录") {
root.expand();
}
}
效果如图:
这一次是不是就相对来说好很多了呀?
大家看到了,我加载完的展开事件是判断了一下的,如果是我添加的那个跟节点才展开,否则不展开的。当然你也可以根据root.raw里的ID或者其他来判断,具体的看你高兴,但是记得必须是跟节点唯一的属性。大家可以试试,如果不判断,所有的节点都展开会出现什么问题(剧透:有时候跟节点会莫名其妙的增加,然后展开是根据索引来的,所以展开也会混乱)。