2010-05-13 1 views
1

Я использую EXT-js для проекта, обычно все довольно прямолинейно с EXT-js, но с PropertyGrid я не уверен. Я хотел бы получить совет по поводу этого фрагмента кода.EXT-js PropertyGrid лучшие методы для достижения обновления?

Первый магазин, чтобы заполнить таблицу свойств, на события загрузки:

var configStore = new Ext.data.JsonStore({ 
     // store config 
    autoLoad:true, 
     url: url.remote, 
     baseParams : {xaction : 'read'}, 
     storeId: 'configStore', 
     // reader config 
     idProperty: 'id_config', 
     root: 'config', 
    totalProperty: 'totalcount', 
     fields: [{ 
      name: 'id_config' 
     }, { 
      name: 'email_admin' 
     } 
    , { 
      name: 'default_from_addr' 
     } 
    , { 
      name: 'default_from_name' 
     } 
    , { 
      name: 'default_smtp' 
     } 
    ],listeners: { 
      load: { 
       fn: function(store, records, options){ 
        // get the property grid component 
        var propGrid = Ext.getCmp('propGrid'); 
        // make sure the property grid exists 
        if (propGrid) { 
         // populate the property grid with store data 
         propGrid.setSource(store.getAt(0).data); 
        } 
       } 
      } 
     } 

    }); 

вот PropertyGrid:

var propsGrid = new Ext.grid.PropertyGrid({ 
     renderTo: 'prop-grid', 
    id: 'propGrid', 
     width: 462, 
     autoHeight: true, 
     propertyNames: { 
      tested: 'QA', 
      borderWidth: 'Border Width' 
     }, 
     viewConfig : { 
      forceFit: true, 
      scrollOffset: 2 // the grid will never have scrollbars 
     } 
    }); 

До сих пор так хорошо, но со следующей кнопкой, я я вызову обновление старой школы, и мой вопрос:

Это правильный способ обновления этого компонента? Или лучше для пользователя редактор? или что-то еще ...

для регулярной сетки я использую методы магазина, чтобы сделать обновление, удаление и т.д. ...

Примеров действительно мало на этом! Даже в книгах о ext-js!

new Ext.Button({ 
     renderTo: 'button-container', 
     text: 'Update', 
     handler: function(){ 

    var grid = Ext.getCmp("propGrid"); 

        var source = grid.getSource(); 

        var jsonDataStr = null; 

        jsonDataStr = Ext.encode(source); 

    var requestCg = { 
          url : url.update, 
          method : 'post', 
          params : { 
           config : jsonDataStr , xaction : 'update' 
          }, 
          timeout : 120000, 
          callback : function(options, success, response) { 
           alert(success + "\t" + response); 
    } 
    }; 
    Ext.Ajax.request(requestCg); 
     } 
    }); 

и спасибо за чтение.

ответ

1

Это должно быть хорошо. Класс PropertyGrid и поддерживающие классы были включены на раннем этапе в Ext, даже перед множеством классов в текущем пространстве имен Ext.data. *. Он никогда не был полностью обновлен, чтобы соответствовать API-интерфейсам, доступным на других стандартных классах данных. В PropertyGrid на самом деле используется простой файл Ext.data.Store под капотом для хранения его данных, но типичные методы и события хранилища не отображаются. Таким образом, вам придется либо делать с getSource(), либо начать делать некоторые основные переопределения.

+0

Большое спасибо bmoeskau. – Tom

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