亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ExtJs怎么使用自定義插件動態保存表頭配置

發布時間:2021-06-26 14:04:00 來源:億速云 閱讀:163 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關ExtJs怎么使用自定義插件動態保存表頭配置,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

關于保存列表表頭的配置,一般我們不需要與后臺交互,直接保存在 localStorage 中就能滿足常規使用需求(需要瀏覽器支持)。

直接上代碼,插件:

Ext.define('ux.plugin.ColumnCustom', {
  alias: 'plugin.columnCustom',
  xtype: 'columnCustom',
  //初始化
  init: function (gridPanel) {
    var me = this;
    me.owner = gridPanel;
    //根據已有配置項設置表頭狀態
    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;
      //只有常規列才有顯式的dataIndex,序號列等非常規列應排除在外
      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;
      //只有常規列才有顯式的dataIndex,序號列等非常規列應排除在外
      if (!dataIndex) return;
      config[dataIndex] = column.isHidden();
    });
    //使用xtype作為索引是相對可靠的做法
    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 || {};
  }
});

如何使用:由于這是一個比較常規的需求,因此這里默認給所有的gridPanel配置此插件,并支持手動配置參數禁用之,考慮復寫gridPanel類。

代碼如下:

Ext.define('override.grid.Panel', {
  override: 'Ext.grid.Panel',
  requires: ['ux.plugin.ColumnCustom'],
  columnCustomDisable: false,
  initComponent: function () {
    var me = this;
    me.callParent();
    //默認全部加上自動保存表頭插件,此處追加一個可配屬性來禁用此插件
    if (!me.columnCustomDisable) {
      me.addPlugin('columnCustom');
    }
  }
});

關于“ExtJs怎么使用自定義插件動態保存表頭配置”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉节县| 海淀区| 且末县| 长武县| 莱阳市| 宁蒗| 齐齐哈尔市| 巨鹿县| 沈丘县| 昆明市| 永安市| 九龙县| 洛川县| 金平| 西和县| 台州市| 保德县| 濮阳县| 绿春县| 西昌市| 渝北区| 衡阳市| 德兴市| 永平县| 莱阳市| 淮滨县| 宜阳县| 白水县| 玉环县| 裕民县| 宁德市| 静乐县| 云龙县| 射阳县| 永善县| 盐城市| 南川市| 车险| 鱼台县| 神池县| 龙井市|