jquery-easyui本身没有提供列锁定/解锁的接口,并且其原有的列隐藏/显示在符合表头的情况下会出现错位,我在项目中遇到了这两个问题,在参考了网上许多解决方案后,编写了一个拓展插件,基本上解决了这两个问题。

解决问题的思路

网上很多人都是通过拓展和复写easyui原有的方法来对html进行操作,这种方法基本上能解决问题,但是我却纠结与后续升级的问题-万一下个版本的easyui页面结构变了咋办?

为了解决这个问题,我使用了一种取巧的办法:

    var refactorView = function(target,opts){
if(!opts){return;}
var t = $(target);
var data = t.datagrid('getData');//获取当前数据
var url = opts.url;//获取url
opts.url='';//清空url避免重新请求服务器
t.datagrid(opts);//重构表格布局
t.datagrid('loadData',data);//加载数据
t.datagrid('options').url = url;//恢复请求服务器能力
};
$.extend($.fn.datagrid.methods,{
/*refactor view&&unrelod data 重构视图&&不重新加载数据*/
refactorView:function (jq, option) {
return jq.each(function () {
refactorView(this, option);
});
}
});

拓展的这个方法很简单,作用是在不重新请求远程数据的前提下重构当前的页面结构。

之后需要做的事情就很简单了,在用户执行锁定/解锁、隐藏/取消隐藏等操作的时候,直接通过js改变options的结构,然后重新渲染视图就ok了。

当然这里面还涉及到对操作的存储等问题,简单说下具体细节:

在第一次执行锁定/解锁、隐藏/取消隐藏操作时,我会给option中的columns和frozenColumns中的columnOption增加一个属性coordinate

arrayUtil.each(frozenColumns,function(level,line){
arrayUtil.each(line,function(index,columnOption){
columnOption.coordinate = {
level:level,
index:index,
preIndex:index>0?index - 1:-1
};
});
});

这样一来所有的列都有了唯一的坐标,不论我对这些列怎么操作,最后都能根据这个坐标将其恢复

http://download.csdn.net/detail/tianxiawudi0720/8986419

附上源码(另:由于时间问题,复核表头的子表头在锁定的时候只是简单的把他移动到锁定列里了,有兴趣可以参考隐藏/显示列的功能把这块儿补全,代码位置如下图:)

【jquery easyUI 拓展的更多相关文章

  1. MVC 使用Jquery EasyUI分页成功

    先上图吧

  2. 第二百一十五节,jQuery EasyUI,DateBox(日期输入框)组件

    jQuery EasyUI,DateBox(日期输入框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 DateBox(日期输入框)组件的使 ...

  3. 套用JQuery EasyUI列表显示数据、分页、查询

    声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...

  4. Jquery EasyUI 开发实录

    有好几年没有用过EasyUI了,最近在外包做的一个项目中新增功能时,又用到了,本以为和按照以前那样用就可以了,可当我真正用的时候,发现许多地方不一样了,就连官网的文档都更新了,最突出的就是不知道什么时 ...

  5. jQuery UI与jQuery easyUI的冲突解决办法

    jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替 ...

  6. jquery easyui 动态绑定数据列

    function doSearch2() { var strsql = $('#sssql').val(); $.ajax({ url: "../HttpHandler/DownloadHa ...

  7. jquery easyui使用(四)······添加,编辑,删除

    前端: <div style="font-size: 25px; font-weight: 700; margin: 50px 0 10px 10px;"> 车辆登记 ...

  8. jquery easyui使用(二)······可折叠面板动态加载无效果

    先上代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"& ...

  9. jquery easyui使用(一)······可折叠面板的布局,手风琴

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...

  10. jquery easyui菜单树显示

    目前做了一个easyui项目需要显示多级菜单,菜单配置到数据库中,因此每级菜单都需要到数据库中取,用了jQuery EasyUI方便多了. 效果体验:http://hovertree.com/texi ...

随机推荐

  1. JAVA虚拟机03-常量池项中字面量和符号引用

    转https://baijiahao.baidu.com/s?id=1682261792528500739&wfr=spider&for=pc 1 符号引用 符号引用以一组符号来描述所 ...

  2. imax6开发版_挂载NFS文件系统

    挂载:mount -o vers=4 192.168.30.108:/home/penuel/linux_imax6/workdir /home/root/workdir 取消挂载:umount /h ...

  3. Vmware15 + Ubuntu18.0.4 安装教程(史上最详细记录)【多图预警】

    转载csdn: Vmware15 + Ubuntu18.0.4 安装教程(史上最详细记录)[多图预警]_亦靈兒的博客-CSDN博客

  4. 好用的liunx可视化管理工具

    官网: https://www.terminal.icu/ 本地连接需要点击软件右上角切换线路到本地连接

  5. Vulhub 漏洞学习之:ElasticSearch

    Vulhub 漏洞学习之:ElasticSearch 目录 Vulhub 漏洞学习之:ElasticSearch 1 ElasticSearch 命令执行漏洞(CVE-2014-3120)测试环境 1 ...

  6. 登峰造极,师出造化,Pytorch人工智能AI图像增强框架ControlNet绘画实践,基于Python3.10

    人工智能太疯狂,传统劳动力和内容创作平台被AI枪毙,弃尸尘埃.并非空穴来风,也不是危言耸听,人工智能AI图像增强框架ControlNet正在疯狂地改写绘画艺术的发展进程,你问我绘画行业未来的样子?我只 ...

  7. KB 与 KiB

    字节(Byte)是计算机中存储数据的基本单位,每 8 位比特(bit)组成一个字节.各种信息在计算机中存储.处理至少需要一个字节.例如,一个 ASCII 码用一个字节表示,一个汉字用两个字节表示. 根 ...

  8. MapboxGL基础

    1. 概述 Mapbox GL 是一套开源库,用于在 Web.移动和桌面应用程序中嵌入可自定义且响应迅速的客户端地图.Mapbox GL 贴图以高帧速率呈现.缩写"GL"来自行业标 ...

  9. day12_内部类&API

    1.参数传递 1.1 类名作为形参和返回值 类名--方法形参     方法的形参是类名,需要的是该类的对象:实际传递的是该对象的地址值 类名--返回值     方法的返回值是类名,返回的是该类的对象: ...

  10. Git Please commit your changes or stash them before you merge.

    本地分支和远程修改了同一个文件代码,pull远程分支的代码的时候会文件冲突 出现这个错误 Please commit your changes or stash them before you mer ...