EXT.NET中Store的AutoLoad問題

用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或者其他來判斷,具體的看你高興,但是記得必須是跟節點唯一的屬性。大家可以試試,如果不判斷,所有的節點都展開會出現什麼問題(劇透:有時候跟節點會莫名其妙的增加,然後展開是根據索引來的,所以展開也會混亂)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章