EXT-js PropertyGrid实现更新的最佳实践?

时间:2010-05-13 03:10:03

标签: ajax extjs propertygrid

我正在为一个项目使用EXT-js,通常 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 个答案:

答案 0 :(得分:1)

那应该没问题。 PropertyGrid和支持类早期包含在Ext中,甚至在当前Ext.data。*命名空间中的许多类之前。它从未真正完全更新以匹配其他标准数据类上可用的API。 PropertyGrid实际上使用简单的Ext.data.Store来存储其数据,但是不会公开典型的存储方法和事件。因此,您要么必须使用getSource(),要么开始做一些重要的覆盖。