2016-03-30 9 views
0

extjsアプリケーションでは、ストアからjsonデータをロードしているツリーパネルがあります。その情報では、ツリーパネルの行に対してチェックボックスを操作できるプロパティcheckedがあります。ExtJsツリーパネルのチェックボックスをクリアする

ボタンを聞いてチェックボックスを非表示にするにはどうすればよいですか? (すべてのチェックボックスをクリアしてください)

ここで少し状況を説明するバイブルです。そのような

https://fiddle.sencha.com/#fiddle/17v3

答えて

1

更新してコード:すべてのノードを超える

Ext.application({ 
    name: 'Fiddle', 

    launch: function() { 
     Ext.define('modeloCapa', { 
      extend: 'Ext.data.Model', 
      fields: ['nombre'] 
     }); 

     var treeStore = Ext.create('Ext.data.TreeStore', { 
      model: 'modeloCapa', 
      proxy: { 
       type: 'ajax', 
       url: "data1.json", 
       reader: { 
        type: 'json', 
        root: 'Result' 
       } 
      } 
     }); 

     var tree = Ext.create('Ext.tree.Panel', { 
      title: 'Test', 
      width: 500, 
      store: treeStore, 
      rootVisible: false, 
      renderTo: Ext.getBody(), 
      columns: [{ 
       xtype: 'treecolumn', 
       flex: 2, 
       sortable: true, 
       dataIndex: 'titulo' 
      }],tbar: [{ 
       xtype: 'button', 
       id: 'btnApagarCapas', 
       text : 'Button', 
       width: 100, 
       tooltip: 'Uncheck!!', 
       iconAlign : 'center', 
        listeners: { 
         click : function(){ 
          treeStore.suspendEvents(); 
          treeStore.getRootNode().cascadeBy(function(node) { 
           if (node.get('checked')) { 
            node.set('checked', false); 
           } 
          }); 
          treeStore.resumeEvents(); 
          tree.getView().refresh(); 
        } 
       } 
      }] 
     }); 
    } 
}); 

ループ、チェックされたもののチェックを外します。サスペンドイベントは、各ノードがチェックされていないときにビューをリフレッシュさせないようにすることです。最後にバルクで行います。

+0

'suspendEvents()'がコントローラ内で呼び出されたときに正しく動作しないことを忘れないでください。 –

関連する問題