2011-08-23 22 views
5

Tôi có danh sách lồng nhau với treestore. Trong khi tải lần đầu tiên cửa hàng được tải hoàn hảo và danh sách đang được hiển thị theo cửa hàng. Khi tôi nhấp vào nút refresh, treestore của tôi sẽ được tải lại với dữ liệu mới (với cùng một kiểu dữ liệu như lần đầu tiên) và danh sách lồng nhau cũng cần phải được tải lại với bộ dữ liệu mới.Cách tải lại TreeStore?

Dưới đây là định nghĩa của tôi treestore

rightPaneStoreData = getFolderListData(); 

rightPaneStore =new Ext.data.TreeStore({ 

    autoLoad:false, 

    model: 'FIMT.models.rightPaneModel', 

    root: rightPaneStoreData, 
    proxy: { 

    type: 'memory', 

    reader: { 

     type: 'tree', 
     root: 'items' 
     } 

    }, 
    listeners: { 
     datachanged: function(records){ 
      alert("datachanged"); 
      } 
    } 

    }); 

rightPaneStore.load(); 

Trong Ext.data.JsonStore tôi đã thực hiện cùng một phương pháp sử dụng store.loaddata(). Nhưng tôi không thể tìm thấy phương thức loaddata() cho TreeStore.

Vui lòng giúp tôi.

Trả lời

0

TreePanel không có cửa hàng như JsonStore. Nó tự động hiển thị tất cả các nút và tải lại khi cần.

Trong trường hợp rootNode của bạn (rightPaneStoreData) là một AsyncTreeNode (nạp qua AJAX), bạn có thể sử dụng:

rightPaneStoreData.reload()
(vì rightPaneStoreData là nút gốc của bạn).

hoặc cách khác (hơn generic):
tree.root.reload();
(nơi cây là một tham chiếu đến cây của bạn)

Nếu nó không phải là một ASyncTreeNode, bạn sẽ phải làm điều đó bằng tay. Gọi lại chức năng getFolderListData() và chỉ định thư mục gốc mới cho cây. (tree.setRootNode())

+0

trên đề nghị hai đoạn mã didnt làm việc cho tôi – shatthi

+0

Có bất kỳ lỗi trên giao diện điều khiển của bạn? (Chrome Devtools/Firefox Firebug?) –

+0

Có trong chrome, nó nói tải lại() không có sẵn cho cả tham chiếu rightpanestoredata và tham chiếu treestore của tôi. – shatthi

9

Điều này phù hợp với tôi. Tôi đang sử dụng MVC và mã này được gọi trong bộ điều khiển của tôi.

treeStore.getRootNode().removeAll(); 
treeStore.load(); 
+0

treeStore.getRootNode(). RemoveAll(); là những gì tôi chính xác cần thiết để tránh các cuộc gọi ajax đồng thời được thực hiện cho mỗi nút khi treeStore.load(); được gọi là –

+0

Điều này đang hoạt động nhưng, bạn có biết tại sao lại mất quá nhiều thời gian để xóa hồ sơ khỏi treestore của tôi không – Dibish

0
treeStore.getRootNode().removeAll(); 
treeStore.setRootNode({ 
    id: rootNodeId, 
    text: 'root' 
    // other configs in root 
}); 
// if you had non-standard children loads, then you would need to call: 
treeStore.getProxy().load(); 
// if you had non-standard children loads, and you had params in your load, then you would need to call: 
treeStore.getProxy().load({ 
    params: { 
    node: rootNodeId 
    } 
}); 
0
// Remove all current children if clear on load not set 
if (!treeStore.clearOnLoad) { 
    record.removeAll(); 
} 

// Call load, refreshing our view when done... 
var viewRefresher = function() { 
    view.refresh(); 
}; 

treeStore.load({ 
    node: record, 
    callback: viewRefresher 
}); 
Các vấn đề liên quan