-
8 Sep 2010 12:57 AM #1
Ext.tree.TreeSorterのソート中表示について
Ext.tree.TreeSorterのソート中表示について
「Ext.tree.TreePanel」 + 「Ext.tree.AsyncTreeNode」 + 「Ext.tree.TreeSorter」 を利用して、非同期通信で得たノードのソートを行っております。
ツリーのノード取得中には「Ext.LoadMask」を利用してロード中のマスク表示をおこなっています。
ノードを取得し終わるとマスクを解除して、その後ソート処理が行われます。
多数のノードのソート処理には時間がかかるため、ソート処理中にはそれがわかるように「ソート中」のようなマスク表示を行い、
ソート完全終了後にマスクを解除したいと考えています。
しかしながら、ソートが完全に終了してマスクを解除させるタイミングがわからずに困っております。
ソート処理が終了した時点が判断できるイベント等があれば良いのでしょうが、
何か良い方法などはありますでしょうか。
-
8 Sep 2010 10:21 PM #2
ソート処理は、ノードのbeforeexpandとexpandイベントの間に行われるので、その間マスク処理を行えばいいかと思います。ノード毎にイベントリスナーを設定する必要は発生しますが。
-
10 Sep 2010 5:13 AM #3
ご返答ありがとうございます。
親ノードのbeforeexpandイベントでマスク処理を、expandイベントでマスク解除処理を試してみましたが、
expandイベントがコールされた後も子ノードのソート処理が行われているようにみえました。
Ext.tree.TreeSorterのdoSort(Ext.tree.TreeNode)の中で子ノード数をカウントすることで
なんとかソート完了が判断できないかと考えています。
-
12 Sep 2010 5:47 PM #4
下記のようなコードを試してみたのですが、1500件ほどのノードであればうまく動いているように見えるんですけどね
ちなみに、コード中の treesort.php は下記のような感じです:PHP Code:Ext.onReady(function(){
var t = new Ext.tree.TreePanel({
renderTo: Ext.getBody(),
autoScroll: true,
height: 500,
width: 300,
dataUrl: 'treesort.php',
root: {
nodeType: 'async',
text: 'root'
}
});
var ts = new Ext.tree.TreeSorter(t, {
folderSort: true,
dir: "asc",
sortType: function(node){
return node.attributes.val;
}
});
t.show();
t.loadmask = new Ext.LoadMask(t.el, { msg: "Loading..."});
t.sortmask = new Ext.LoadMask(t.el, { msg: "Sorting..."});
t.on({
beforeload: t.loadmask.show,
load: t.loadmask.hide,
scope: t.loadmask
});
t.getRootNode().on({
beforeexpand: t.sortmask.show,
expand: t.sortmask.hide,
scope: t.sortmask,
single: true
});
});
PHP Code:$nodes = array();
$max = 1500;
for($i=0; $i<$max; $i++){
$val = rand(0,$max);
$n = array(
"text" => "node".$val,
"val" => $val,
"leaf" => true,
);
array_push($nodes,$n);
}
echo json_encode($nodes);
Similar Threads
-
[1.2] Ext.ux.tree.ArrayTree - Tree from array Extension (stateful, Ext 2.2 compat)
By jsakalos in forum Ext 2.x: User Extensions and PluginsReplies: 31Last Post: 22 Aug 2010, 12:34 PM -
Ext.tree: reset Treeloader & render Tree without pageref
By oxi in forum Ext 1.x: Help & DiscussionReplies: 3Last Post: 23 Jan 2010, 12:15 AM -
Custom Template for Ext.tree.TreePanel (Ext.tree.TreeNodeUI)
By roymartin in forum Ext 3.x: Help & DiscussionReplies: 3Last Post: 30 Oct 2009, 10:01 AM -
Extendin a EXT.tree.TreeNode or building a new Ext.tree.TreeNodeUI
By kheraud in forum Ext 3.x: Help & DiscussionReplies: 0Last Post: 25 Jul 2009, 1:52 PM -
Ext.tree.TreeDropZone and Ext.tree.TreeNode isTarget property
By Animal in forum Ext 1.x: BugsReplies: 3Last Post: 5 Sep 2007, 10:52 PM


Reply With Quote