2017-12-08 2 views
0

Ich habe ein Raster, das eine Spalte mit Kontrollkästchen hat. Ich habe xtype checkcolumnSo deaktivieren Sie die Prüffelder der Reihe in Ext Gitter

dafür verwendet. folgen Sie der Geige hier: https://fiddle.sencha.com/#view/editor&fiddle/2ano

Jetzt möchte ich Checkbox bei pertikulären (in diesem Fall 2.) Zeile auf Klick der angegebenen Schaltfläche deaktivieren. Ich habe versucht, sie mit xtypes zu bekommen, aber kein Glück.

schließlich fand ich einen Workaround.

store.getAt(1).data.active = false; 
grid.getView().refresh(); 

Es funktioniert aber nicht sicher, ob es der richtige Weg, dies zu tun. Ich werde mich für irgendwelche Vorschläge freuen. Danke.

Antwort

0

Ein Weg nach Ihrem Code.

Sie können diese Methoden der Netzspeicher verwenden store.each(), store.clearFilter() und store.filter('active',true).

In diesem FIDDLE, können Sie hier prüfen uncheck geprüft Spalten record.set('active',false) verwenden.

var store = Ext.create('Ext.data.Store', { 
    fields: ['name', 'email', 'phone', 'active'], 
    data: [{ 
     name: 'Lisa', 
     email: '[email protected]', 
     phone: '555-111-1224', 
     active: false 
    }, { 
     name: 'Bart', 
     email: '[email protected]', 
     phone: '555-222-1234', 
     active: true 
    }, { 
     name: 'Homer', 
     email: '[email protected]', 
     phone: '555-222-1244', 
     active: false 
    }, { 
     name: 'Marge', 
     email: '[email protected]', 
     phone: '555-222-1254', 
     active: false 
    }] 
}); 

Ext.create('Ext.grid.Panel', { 
    title: 'Simpsons', 
    itemId: 'test', 
    renderTo: Ext.getBody(), 
    store: store, 
    buttons: [{ 
     text: 'Un check', 
     handler: function() { 
      var store = this.up('grid').getStore(); 
      store.clearFilter(); 
      store.filter('active', true); 
      store.each(function (rec) { 
       rec.set('active', false); 
      }); 
      store.clearFilter(); 
     } 
    }], 
    columns: [{ 
     text: 'Name', 
     dataIndex: 'name' 
    }, { 
     text: 'Email', 
     dataIndex: 'email', 
     flex: 1 
    }, { 
     text: 'Phone', 
     dataIndex: 'phone' 
    }, { 
     xtype: 'checkcolumn', 
     text: 'Active', 
     dataIndex: 'active' 
    }] 
}); 

Eine andere Möglichkeit, nach Ihren Code.

Sie können für gridselModel und selType configs verwenden.

In diesem FIDDLE, ich habe eine Demo mit selType und selModel Config erstellt. Es wird Ihnen helfen oder Sie mehr über grid Checkbox Auswahl führen.

Ext.create('Ext.grid.Panel', { 
     title: 'Simpsons', 
     store: store, 
     id: 'testGrid', 
     columns: [{ 
      text: 'Name', 
      dataIndex: 'name' 
     }, { 
      text: 'Email', 
      dataIndex: 'email', 
      flex: 1 
     }, { 
      text: 'Phone', 
      dataIndex: 'phone' 
     }], 
     renderTo: Ext.getBody(), 
     selModel: { 
      checkOnly: false, 
      //injectCheckbox: 'last', 
      mode: 'SIMPLE' 
     }, 
     selType: 'checkboxmodel', 
     buttons: [{ 
      text: 'Select All', 
      handler: function() { 
       Ext.getCmp('testGrid').getSelectionModel().selectAll(); 
      } 
     }, { 
      text: 'Deselect All', 
      handler: function() { 
       Ext.getCmp('testGrid').getSelectionModel().deselectAll(); 
      } 
     }] 
    }); 
+0

Ich war auf der Suche nach der ersten Lösung. Danke @Njdhv. – Ghan

+0

meist willkommen @Ghan :) –

Verwandte Themen