2016-03-30 2 views
0

In einer extjs App habe ich eine Baumstruktur, die JSON-Daten aus einem Geschäft lädt. In dieser Information habe ich eine Eigenschaft checked, die es ermöglicht, ein Ankreuzfeld über eine Zeile in der Baumansicht zu manipulieren.ExtJs deaktivieren Kontrollkästchen in einem Strukturbereich

Wie kann ich tun, um das Kontrollkästchen durch Anhören einer Schaltfläche grafisch zu deaktivieren? (Alle aktivierten Kästchen löschen)

Hier ist eine Geige, die ein bisschen die Situation erklärt.

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

Antwort

1

Aktualisieren Sie Ihren Code wie folgt:

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(); 
        } 
       } 
      }] 
     }); 
    } 
}); 

Schleife über alle Knoten, die, deaktivieren, die überprüft werden. Die Suspend-Ereignisse sollen verhindern, dass die Ansicht jeden Knoten aktualisiert, wenn sie nicht markiert ist, am Ende einfach in Masse.

+0

Vergessen Sie nicht, dass 'suspendEvents()' nicht ordnungsgemäß funktioniert, wenn sie innerhalb des Controllers aufgerufen werden. –