關(guān)于保存列表表頭的配置,一般我們不需要與后臺(tái)交互,直接保存在 localStorage 中就能滿足常規(guī)使用需求(需要瀏覽器支持)。
直接上代碼,插件:
Ext.define('ux.plugin.ColumnCustom', {  alias: 'plugin.columnCustom',  xtype: 'columnCustom',  //初始化  init: function (gridPanel) {    var me = this;    me.owner = gridPanel;    //根據(jù)已有配置項(xiàng)設(shè)置表頭狀態(tài)    me.setColumnConfig(gridPanel);    gridPanel.on({      columnschanged: me.saveColumnConfig,      scope: me    });  },  setColumnConfig: function (gridPanel) {    var me = this,      xtype = gridPanel.getXType(),      currentColumnConfig = me.getCurrentColumnConfig(),      columnConfig = currentColumnConfig[xtype],      columns = gridPanel.getColumns();    if (!columnConfig) return;    columns.forEach(function (column) {      var dataIndex = column.config.dataIndex;      //只有常規(guī)列才有顯式的dataIndex,序號(hào)列等非常規(guī)列應(yīng)排除在外      if (!dataIndex) return;      column.setHidden(columnConfig[dataIndex]);    });  },  saveColumnConfig: function () {    var me = this,      gridPanel = me.owner,      currentColumnConfig = me.getCurrentColumnConfig(),      columns = gridPanel.getColumns(),      xtype = gridPanel.getXType(),      config = {};    columns.forEach(function (column) {      var dataIndex = column.config.dataIndex;      //只有常規(guī)列才有顯式的dataIndex,序號(hào)列等非常規(guī)列應(yīng)排除在外      if (!dataIndex) return;      config[dataIndex] = column.isHidden();    });    //使用xtype作為索引是相對(duì)可靠的做法    currentColumnConfig[xtype] = config;    //localStorage的值類型限定為string類型    localStorage.setItem('columnConfig', Ext.encode(currentColumnConfig));  },  getCurrentColumnConfig: function () {    var allColumnConfigString = localStorage.getItem('columnConfig'),      allColumnConfig = Ext.decode(allColumnConfigString, true);    return allColumnConfig || {};  }});如何使用:由于這是一個(gè)比較常規(guī)的需求,因此這里默認(rèn)給所有的gridPanel配置此插件,并支持手動(dòng)配置參數(shù)禁用之,考慮復(fù)寫gridPanel類。
代碼如下:
Ext.define('override.grid.Panel', {  override: 'Ext.grid.Panel',  requires: ['ux.plugin.ColumnCustom'],  columnCustomDisable: false,  initComponent: function () {    var me = this;    me.callParent();    //默認(rèn)全部加上自動(dòng)保存表頭插件,此處追加一個(gè)可配屬性來(lái)禁用此插件    if (!me.columnCustomDisable) {      me.addPlugin('columnCustom');    }  }});總結(jié)
以上所述是小編給大家介紹的ExtJs使用自定義插件動(dòng)態(tài)保存表頭配置(隱藏或顯示),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答