分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

【jquery easyUI 拓展

发布时间:2023-09-06 02:01责任编辑:胡小海关键词:暂无标签

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 拓展

原文地址:https://www.cnblogs.com/Eric-5279/p/9217328.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved