背景:项目中使用easyui作为前端架子。datagrid默认是点击行就选中此行然后变色。

需求:点击行不让此行选中;只能通过点击复选框才能选中某一行。

解决思路:

  1、写点击行函数function onClickRow(rowIndex,rowData){}

  2、查询当前datagrid所有选中行。

  3、遍历选中行。对比选中行索引和点击行的索引:如果点击行的索引在所有选中行中,则取消点击行的选中状态;如果不存在,则选中点击行。

代码:

<script type="text/javascript">
// 行点击事件
function rowClick(rowIndex,rowData){
var rows = $("#datagrid").datagrid('getSelections');
var tag = true;
// 判断是否刚刚选中
for(var i = 0;i<rows.length;i++){
// 所有选中行中存在刚刚点击的行 则取消选中
if($('#datagrid').datagrid('getRowIndex', rows[i])==rowIndex){
// 取消选中此行
$('#datagrid').datagrid('unselectRow',rowIndex);
tag = false;
break;
}
}
// 判断是否刚刚取消
if(tag){
$('#datagrid').datagrid('selectRow',rowIndex);
}
}
</script>

延伸:

  在解决这个问题的时候看到js中Set对象的使用。如果使用Set对象,上面的代码则变成下面这样:

使用Set对象(此情景并不适用Set对象,为以后使用打下基础吧)

<script type="text/javascript">
// 行点击事件
function rowClick(rowIndex,rowData){
var rows = $("#datagrid").datagrid('getSelections');
var set = new Set();
// 判断是否刚刚选中
for(var i = 0;i<rows.length;i++){
var currentIndex = $('#datagrid').datagrid('getRowIndex',rows[i]);
set.add(currentIndex);
// 所有选中行中存在刚刚点击的行 则取消选中
if(currentIndex==rowIndex){
// 取消选中此行
$('#datagrid').datagrid('unselectRow',rowIndex);
}
}
// 判断是否刚刚取消
if(!set.has(rowIndex)){
$('#datagrid').datagrid('selectRow',rowIndex);
}
}
</script>

【easyUI】取消easyui行点击选中事件,智能通过勾选checkbox才能选中行的更多相关文章

  1. 扩充 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)

    客户需求: jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) 如图所示,Datagrid 鼠标悬停/离开数据行时 ...

  2. 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)

    客户需求: jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) 如图所示,Datagrid 鼠标悬停/离开数据行时 ...

  3. 点击DIV触发其他元素的点击事件(案例:点击type="radio" 的input 标签外层DIV,触发内部单选点击选中事件)

    方法一: 直接用找到对应dom元素调用.click()方法 $('.user_content').click(function(){ $(this).children()[0].click(); // ...

  4. CSS侧边栏,ng-click定义选中事件

    本篇小随笔,记录下侧边栏的写法和ng-click点击选中事件.因为这个工程不让引用jQuery.所以ng-click选中事件用了一个比较笨的方法实现的. 下面是HTML页面 按 Ctrl+C 复制代码 ...

  5. easyui datagrid取消点击行的选中事件

    http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=material&dir=ltr&pitem= ...

  6. easyUI datagrid中checkbox选中事件以及行点击事件,翻页之后还可以选中

    DataGrid其中与选择,勾选相关 DataGrid属性:singleSelect boolean 如果为true,则只允许选择一行. false ctrlSelect boolean 在启用多行选 ...

  7. EasyUi datagrid 单选框选中事件

    Easyui datagrid中的单选框默认是这样定义的 columns: [[ { field: 'CK', title: '', checkbox: true, width: 30 }]]. 平常 ...

  8. EasyUI Datagrid 数据网格 点击选中行 再次单击取消选中行

    适用于jquery-easyui-1.9.15版本: 在项目中全局搜索: opts.singleSelect==true 或者在jquery.easyui.min.js中搜索: opts.single ...

  9. easyui datagrid checkbox复选框取消单击选中事件、初始全选全不选等问题解决

    系统业务需要,导入的列表数据默认全部选中,且不可取消选中行.全部店铺优惠券发放过后导入的数据全部清空.如图所示: 一.初始化页面默认全部选中“selectAll”,全部不选中“unselectAll” ...

随机推荐

  1. mongodb为什么比mysql效率高

    首先是内存映射机制,数据不是持久化到存储设备中的,而是暂时存储在内存中,这就提高了在IO上效率以及操作系统对存储介质之间的性能损耗.(毕竟内存读取最快) 其次,NoSQL并不是不使用sql,只是不使用 ...

  2. Codeforces Round #546 C. Nastya Is Transposing Matrices

    题面: 传送门 题目描述: 给出两个n x m的矩阵A,B.矩阵A可以把正方子矩阵进行"转置操作",问:可不可以对矩阵A进行多次这样的操作,使矩阵A变为矩阵B?   题目分析: 这 ...

  3. 2019 GDUT Rating Contest II : Problem G. Snow Boots

    题面: G. Snow Boots Input file: standard input Output file: standard output Time limit: 1 second Memory ...

  4. 微信小程序应用开发-手动创建

    基础知识: index.wxml的代码为 Html,有很多标签,如等 index.wwss相当于css 即样式 index.js中有很多函数,可自定义 操作步骤: 删除app.json文件中page/ ...

  5. 谜题(JAVA语言)

    package 第三章习题; /*  * 有一个5*5的网络,其中恰好有一个格子是空的,其他格子各有一个字母.  * 一个有4种指令:A, B, L, R, 分别表示把空格上.下.左.右的相邻字母移到 ...

  6. PTA 二叉树的三种遍历(先序、中序和后序)

    6-5 二叉树的三种遍历(先序.中序和后序) (6 分)   本题要求实现给定的二叉树的三种遍历. 函数接口定义: void Preorder(BiTree T); void Inorder(BiTr ...

  7. oCPC中转化率模型与校准

    翻看日历时间已经来到了2021年,也是共同战役的第二年,许久没有更新文章了,在与懒惰进行过几次斗争都失利之后,今天拿出打工人最后的倔强,终于收获了一场胜利.闲话不多说,今天咱们重点聊聊oCPC中转化率 ...

  8. 利用别名切换索引流程Elasticsearch 7.7

    背景 公司里面现在有es集群,由于时间过长,es集群中的某个索引过大但是未删除,一直在写入的情况下,昨天写入突然停止了,发现是索引超时的问题,这时想到通过创建一个新的索引来进行索引切换 操作 es 集 ...

  9. Spring Boot入门学习

    1. Spring Boot概述 1.1.什么是Spring Boot SpringBoot是一个可使用Java构建微服务的微框架.是Spring框架及其社区对"约定优先于配置"理 ...

  10. Day13_64_线程的优先级

    线程的调度 * 单核CPU在某一时刻只能执行一条指令,线程只有得到CPU的时间片,也就是使用权,才可以执行指令 * 在单核CPU的机器上线程不是并行运行的,而是频繁切换运行的,只有在多个CPU上线程才 ...