0

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'
    }
}
});
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 に答える