我正在为一个项目使用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);
}
});
感谢阅读。
答案 0 :(得分:1)
那应该没问题。 PropertyGrid和支持类早期包含在Ext中,甚至在当前Ext.data。*命名空间中的许多类之前。它从未真正完全更新以匹配其他标准数据类上可用的API。 PropertyGrid实际上使用简单的Ext.data.Store来存储其数据,但是不会公开典型的存储方法和事件。因此,您要么必须使用getSource()
,要么开始做一些重要的覆盖。