0

存储从服务器获取 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'
    }
}
});
4

1 回答 1

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()
    }
  }
}
于 2013-04-08T11:35:57.393 回答