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实现划词标记+划词搜索功能
Mar 06 Javascript
javascript页面渲染速度测试脚本分享
Apr 15 Javascript
javascript实现日期格式转换
Dec 16 Javascript
浅析jquery unbind()方法移除元素绑定的事件
May 24 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
Oct 14 Javascript
JS+DIV实现的卷帘效果示例
Mar 22 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
Aug 15 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 Javascript
js实现验证码功能
Jul 24 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
Aug 10 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
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
web页面数据展示新想法(json)
2010/06/08 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
Python 爬虫的原理
2020/07/30 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
高中物理教学反思
2014/02/08 职场文书