Store从服务器获取JSON回复。在某些情况下,字段card_number为空。我的任务是在字段card_number为空时隐藏列。 现在,此列显示并显示空值。我可以更改任何代码部分,包括服务器响应。
型号:
Ext.define('Guard.model.Report', {
extend : 'Ext.data.Model',
fields : [ 'first_name', 'last_name', 'card_number'] });
查看:
Ext.define('Guard.view.report.Export', {
extend: 'Ext.grid.Panel',
alias : 'widget.exportreport',
uses: [
'Ext.ux.exporter.Exporter'
],
initComponent: function() {
this.store = 'ReportCreate';
this.dockedItems = [{
xtype: 'toolbar',
dock: 'top',
items: [ {
xtype: 'button',
text : _msg_btn_load_reports_csv,
id : 'loadcsv',
iconCls : 'loadcsvIcon'
}]
}];
this.columns = [ {
text : _msg_tbl_head_fname,
align: 'center',
dataIndex : 'first_name',
flex : 1,
renderer: function(value) {
if(!value) {
return _msg_grid_default_unknown;
}
return value;
}
},{
text : _msg_tbl_head_lname,
align: 'center',
dataIndex : 'last_name',
flex : 1,
renderer: function(value) {
if(!value) {
return _msg_grid_default_unknown;
}
return value;
}
},{
text : _msg_tbl_head_card_number,
align: 'center',
dataIndex : 'card_number',
flex : 1
}];
this.callParent(arguments);
}});
商店:
Ext.define('Guard.store.ReportCreate', {
extend: 'Ext.data.Store',
model: 'Guard.model.Report',
proxy: {
type: 'ajax',
url: 'php/reports.php',
reader: {
type: 'json',
root: 'reportCreate',
successProperty: 'success'
}
}
});
答案 0 :(得分:0)
好的,我的解决方案很尴尬,可能有更好的方法 将加载功能添加到商店:
listeners: {
load: function(store, records){
var hasContent = false;
Ext.Array.each(records, function(obj, index, arr) {
hasContent = (obj.get('card_number') >= 0);
});
if (!hasContent) {
// pseudo code: grid.colomn name hide()
}
}
}