ExtJs使用自定义插件动态保存表头配置(隐藏或显示)


Posted in Javascript onSeptember 25, 2018

关于保存列表表头的配置,一般我们不需要与后台交互,直接保存在 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使用自定义插件动态保存表头配置(隐藏或显示),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用javascript实现给图片加链接
Aug 15 Javascript
jquery滚动特效集锦
Jun 03 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
Jun 05 Javascript
AngularJS在IE8的不支持的解决方法
May 13 Javascript
浅析jQuery Ajax通用js封装
Jun 22 Javascript
vue.js表格组件开发的实例详解
Oct 12 Javascript
JS实现的简单表单验证功能完整实例
Oct 14 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
May 03 Javascript
微信小程序支付前端源码
Aug 29 Javascript
Angular使用Restful的增删改
Dec 28 Javascript
微信小程序实现图片压缩
Dec 03 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
Sep 25 #Javascript
vue单页缓存方案分析及实现
Sep 25 #Javascript
Vue中对拿到的数据进行A-Z排序的实例
Sep 25 #Javascript
vue单页缓存存在的问题及解决方案(小结)
Sep 25 #Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
Sep 25 #Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 #Javascript
vue解决一个方法同时发送多个请求的问题
Sep 25 #Javascript
You might like
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
javascript事件模型代码
2007/07/01 Javascript
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
对dataframe进行列相加,行相加的实例
2018/06/08 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
Python 判断奇数偶数的方法
2018/12/20 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
python 错误处理 assert详解
2020/04/20 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
促销活动方案模板
2014/02/24 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
党员评议个人总结
2014/10/20 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
超市工作总结范文2014
2014/12/19 职场文书
党支部半年考察意见
2015/06/01 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技