js-模拟easyui-datagrid表格各行选中事件-实现逻辑

2024-09-03 19:18

本文主要是介绍js-模拟easyui-datagrid表格各行选中事件-实现逻辑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

鉴于easyui-datagrid一旦使用于大数据,则会非常卡顿,这里模仿easyui-datagrid实现行选中事件的逻辑


var tableObj = {domIdName:'actCarTable',data:[],//表格数据isSelectedTrIndex:[],//被选中行的索引isDblclick:null,//是否双击selectRowArr:[], //选中行数据数组isSelectRowId:[], //是否被选中selectAllDelArr: [],//全选后,按住ctrl剔除的数组dbclickId:'',//双击的iddbclickIndex:'defaultVal',//双击的行号 初始化值为 defaultValisHoverRefresh:false,//进入表格区,滚动才允许执行// isBysing:true,//是否允许滚动触发事件// timeId:null,//滚动延时执行isCtrlKey:0, //挑选isShiftKey:0, //连续多选isSelecAll:0 //全选
}



//按下键
document.onkeydown = function(e){// console.log('keyNum: '+keyNum);var keyNum=window.event ? e.keyCode :e.which;       //获取被按下的键值  if(e.ctrlKey && keyNum == 65){ //全选tableObj.isSelecAll = 2;tableObj.isShiftKey=3;//shift键tableObj.isCtrlKey = tableObj.isShiftKey = 3;// 清除之前已选中的行样式// 清除之前已选中的行数据}else if(keyNum==17){  //按住ctrl键// console.log('按住ctrl键: '+keyNum);// console.log(tableObj.isCtrlKey);tableObj.isCtrlKey = 1;}else if(keyNum==16){//shift键// console.log('shift键: '+keyNum);// console.log(tableObj.isShiftKey);tableObj.isShiftKey=1;}}
	//键盘松开document.onkeyup = function(){if(tableObj.isCtrlKey==1){tableObj.isCtrlKey =2;//松开}else if(tableObj.isShiftKey==1){tableObj.isShiftKey=2;//松开立即切换}else if(tableObj.isSelecAll==1){tableObj.isSelecAll=2;//全选}}



$('#'+tableObj.domIdName).hover(function(){//鼠标进入tableObj.isHoverRefresh = true;// console.log('进入-活动车辆列表: '+tableObj.isHoverRefresh);// refreshList();},function(){//鼠标离开tableObj.isHoverRefresh = false;// console.log('离开-活动车辆列表: '+tableObj.isHoverRefresh);}).click(function(e){// 活动车辆列表-单击委托事件parent.$('#rightMenu1').hide();var actCarData = parent.actCarLargeSet.allData.actCarData;if(actCarData.length<=0)return false;e = e || window.event;var target = e.target || e.srcElement;//兼容处理if(target.parentNode.getAttribute('isHeadTr')){//头部事件绑定console.log('头部事件绑定');var statu = target.getAttribute('statu');if(statu==0){//升序 - 第一次点击前,需保存排序前的数据}else if(statu==1){//降序}else if(statu==2){//恢复点击前数据}//先清空旧数据}else{ //非头部事假-数据行事件绑定// console.log('tbody');setTimeout(function(){if(tableObj.isDblclick)return;if(tableObj.isCtrlKey==1){// 上一步是全选,下一步按住ctrl,选中即剔除if(tableObj.isSelecAll==2){
}else if(tableObj.isSelectRowId[devid]){//重复选择,删除数组中该相关数据,同时修改该行样式}else{}tableObj.isCtrlKey = 2;}else if(tableObj.isShiftKey==1){// shift 连续多选if(tableObj.isSelecAll==2){//上一步是全选,则去除全选的效果}}else{//单选if(tableObj.isSelecAll==2){//上一步是全选,下一步是单选,则去除全选的效果}}tableObj.isShiftKey = tableObj.isSelecAll = tableObj.isCtrlKey=3;// 3 意味着不再考虑},200);}tableObj.isDblclick = false;}).dblclick(function(e){// 活动车辆列表-双击委托事件e = e || event;var target = e.target || e.srcElement;//兼容处理if(!target.parentNode.getAttribute('isHeadTr')){//双击数据行生效(双击表头行无效)console.info('双击');}});


这篇关于js-模拟easyui-datagrid表格各行选中事件-实现逻辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133812

相关文章

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用