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如何使用自定义插件动态保存表头配置(隐藏或显示)的更多相关文章
- mybatis自定义插件动态修改sql语句
step1:定义Interceptor实现org.apache.ibatis.plugin.Interceptor import org.apache.commons.logging.Log; imp ...
- bootstrap table插件动态加载表头
这篇文章主要为大家详细介绍了bootstrap table插件动态加载表头,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫 ...
- CKEditor在线编辑器增加一个自定义插件
CKEditor是一个非常优秀的在线编辑器,它的前身就是FCKEditor,CKEditor据官方说是重写了内核的,但功能和性能比FCKEditor更为强大和优越.记得07年的时候第一次接触FCKEd ...
- mybaits源码分析--自定义插件(七)
一.MyBatis插件 插件是一种常见的扩展方式,大多数开源框架也都支持用户通过添加自定义插件的方式来扩展或者改变原有的功能,MyBatis中也提供的有插件,虽然叫插件,但是实际上是通过拦截器(Int ...
- 深入学习jQuery自定义插件
原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数); $(‘#id’).myPlugin(o ...
- Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)
在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...
- BrnShop开源网上商城第四讲:自定义插件
重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www.brnshop.com. 好了现在进入今天的 ...
- Qt之自定义插件(for Qt Designer)
之前Blog里面有关于QWT的编译.配置.使用的文章,分别是在VS与Creator下进行的. QWT编译.配置.使用(VS2010 + Qt5.1.0). QWT编译.配置.使用(Qt Creator ...
- BrnShop:自定义插件
BrnShop开源网上商城第四讲:自定义插件 重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www ...
随机推荐
- JQuery:介绍、安装、选择器、属性操作、动画
目录 jQuery 详细内容 1.JQuery介绍 2.JQuery的下载安装 3.JQuery的使用 4.jQuery的选择器 5.JQuery的属性操作 6.动画 6.自定义动画 jQuery 详 ...
- 从MySQL高可用引出对高可用架构设计的一些思考
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- Mybatis源码解析(二)
根据上篇的代码跟踪mybatis已经ready好 SqlSessionFactory了,下面就是我们怎么去通过这个factory去获取sqlSession会话了,继续扒源码: mybatis-spri ...
- 一篇文章带你搞懂 SpringBoot与Swagger整合
Swagger使用由于不喜欢csdn的markwoen编辑器,对代码样式支持不好,看着不舒服,对审美要求比较高的同学移步github:https://github.com/itguang/swagge ...
- cobian backup 11 使用
主机和备份机器创建备份用户(bf) 在备份机器上 设置备份用户, 备份目录右键安全,添加刚刚创建的备份bf用户,并授予所有权限 设置文件夹共享,并设置共享用户为刚刚创建的bf用户 并且在高级共享设置去 ...
- 旧版本linaro-ubuntu更改软件源
最近打算研究下arm版本的linaro ubuntu桌面系统,但是在安装软件时速度实在太慢,便想修改一下软件源. 无奈查看系统版本时,显示的是linaro 11.12,但却不知和ubuntu有和关系, ...
- Codeforces Round #533(Div. 2) A.Salem and Sticks
链接:https://codeforces.com/contest/1105/problem/A 题意: 给n个数,找到一个数t使i(1-n)∑|ai-t| 最小. ai-t 差距1 以内都满足 思路 ...
- DWR+Spring配置使用
一.DWR介绍 DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端 ...
- Spark Mllib里如何将预测结果如0或1,转换为文字描述来显示预测结果输出(图文详解)
不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集
- 本地连接远程Oracle数据库
由于项目开发测试,需要在本地连接远程的Oracle数据库 之前搭过环境,但是重装了系统,现在又重新装一遍 软件安装 连接远程Oracle需要两个软件: 一个Oracle客户端,instantclien ...