2014-02-05 4 views
1

моя проблема в том, что я хочу обновить существующий магазин и показать изменения в сетке. Что я делаю, чтобы обновить это:фиксировать изменения в существующих записях в магазине extjs

var record = store.getById(me.internalParameters.editInfo.id); 
//console.log(me.InfoEditorPanel.hardwareIdField.value); 
record.set('hardwareid', me.InfoEditorPanel.hardwareIdField.value); 
record.set('location', me.InfoEditorPanel.locationField.value); 
record.set('isActive', me.InfoEditorPanel.isActiveField.value); 
record.commit(); 
store.load(); 

Вот что я использую для создания сетки.

Utils.getPanelListGrid = function (parameters) { 
    if (parameters.initParameters == null) 
     parameters.initParameters = {}; 
    var initParameters = parameters.initParameters; 
    initParameters.gridColumns = [ 
     { header: "ID", dataIndex: "id", flex: 1 }, 
     { header: "Hardware ID", dataIndex: "hardwareid", flex: 1 }, 
     { header: "Location", dataIndex: "location", flex: 1 }, 
     { header: "Active", dataIndex: "isActive", flex: 1 } 
    ]; 
    return new Backend.shared.MyDataGrid(parameters); 
}; 

Ext.define(
    "shared.MyDataGrid", { 

     extend: "Ext.grid.Panel", 
     xtype: "MyDataGrid", 
     title: "MyDataGrid - Hardcoded values", 
     initParameters: { 
      storeIdProperty: null, 
     }, 
     initComponent: function() { 
      this.store = Ext.create('Ext.data.Store', { 
       storeId: 'myStore', 
       proxy: { 
        type: 'memory', 
        reader: { 
         type: 'json', 
         root: 'items' 
        } 
       }, 
       fields: ['id', 'hardwareid', 'location', 'isActive'], 
       data: { 
        'items': [{ 
         'id': '123456', 
         'hardwareid': "HID-159", 
         'location': "Bedroom", 
         'isActive': "No" 
        }, { 
         'id': '789456', 
         'hardwareid': "HID-357", 
         'location': "Kitchen", 
         'isActive': "Yes" 
        }, { 
         'id': '147852', 
         'hardwareid': "HID-149", 
         'location': "Guest-room", 
         'isActive': "Yes" 
        } 
        ] 
       } 
      }); 

      this.columns = this.initParameters.gridColumns; 

      this.listeners = { 
       selectionchange: { 
        scope: this, 
        fn: function (selectionModel, selectedRecords, eventOptions) { 
         this.selectedIds = []; 
         this.selectedItems = []; 

         if (selectedRecords != null) { 
          for (var i = 0; i < selectedRecords.length; i++) { 
           var item = selectedRecords[i].data; 
           this.selectedIds.push(item[this.initParameters.storeIdProperty]); 
           this.selectedItems.push(item) 
          } 
         } 
         if (this.initParameters.selectionChangeCallback != null) 
          this.initParameters.selectionChangeCallback(this.selectedIds, this.selectedItems); 
        } 
       } 
      }; 

      shared.MyDataGrid.superclass.initComponent.call(this); 
     }, 
     getRecordCount: function() { 
      return this.getStore().getTotalCount(); 
     }, 
     getSelectedIds: function() { 
      return this.selectedIds; 
     }, 
     getSelectedItems: function() { 
      return this.selectedItems; 
     } 
    }); 

Может кто-нибудь объяснить, что я должен сделать, чтобы показать сетку обновленную строку?

ответ

1

Я предлагаю использовать следующий код на вашем мероприятии «changechange».

this.getStore().load({ 
    params:{ 
     'yourModelIdProperty':'selectedId' 
    } 
}); 

Это вызов прокси-сервера. Вы должны написать функцию для этого прокси-сервера и загрузить обновленные данные.

Смежные вопросы