【訂正】
罫線から下の内容間違っていました。
チェックボックスを動的制御するメソッド、見つけました。
TreeNodeUIオブジェクト内に「toggleCheck()」というメソッドがあって、これを利用することで、状態変更できます。
//ノードの取得 var node = tree.getNodeById('ノードのID'); //ノードUIの取得 var ui = node.getUI(); //チェックする ui.toggleCheck( true );
toggleCheck()に渡す値をfalseにすればチェックが外れます。
TreeNodeUIのリファレンスまでちゃんと読んでいなかった僕のミスでした。。。
すみません。
Ext.JSのTreePanelにはチェックボックスを付けることができる。(チェックツリーというらしい)
Ext.JS本家のサンプルはこんな感じ→http://www.sencha.com/deploy/dev/examples/tree/check-tree.html
で、諸事情から、ここについているチェックボックスのチェックをJSで動的に着け外ししたい。
チェックが付いているノード(各要素)を取得できるメソッドは用意されているのに、
チェックを付けるメソッドが標準でない(T_T)
仕方ないので、Ext.JSを解析。(これが約1時間の作業。泣)
ノードはtreeNodeオブジェクトとtreeNodeUIオブジェクトから成立していることが分かった。
treePanelからtreeNodeを取得するには、getNodeById()を使えば良い。
そしてtreeNodeからtreeNodeUIを取得するには、getUI()を使う。
チェックボックスはtreeNodeUIのcheckboxというメンバで保存されている。
こいつのcheckedプロパティをtrueにしてやれば、できた。
ところが、当たり前だけど、checkboxのプロパティを変更するだけでは、
treeNodeUIのcheckedプロパティは変更されないので、
こちらも合わせて動的変更する必要がある。
というわけで、次のように書いた。
//ノードの取得 var node = tree.getNodeById('ノードのID'); //ノードUIの取得 var ui = node.getUI(); //チェックボックスにチェックをつける ui.checkbox.checked = true; //ノードのcheckedプロパティを変更 node.checked = true;
大体こんな感じ。
回りくどい。
出来る人はExt.JS自体を改変した方がいいですよー。
(多分PGなら、ここまで分かれば、あとはどこを改変すればいいかわかると思うので割愛)
コメントを残す