Easyui笔记2:实现datagrid多行删除的示例代码


Posted in Javascript onJanuary 14, 2017

如何实现datagrid多行删除?

最近在前端界面开发中,使用了datagrid组件。需要完成一个多行勾选并删除的功能。

查看easyui api,其中有一个deleteRow方法,传入要删除行的索引,即可删除该行。

错误做法

于是准备用deleteRow方法和onChecked和onUncheck事件配合使用,来完成多行删除功能。

当用户勾选一行时,触发onChecked事件,将onChecked事件传进来的index索引push到一个全局array中。

当用户取消勾选的时候,触发onUncheck事件,得到onUncheck时间传进来的index索引,用splice方法把array中的该索引值去掉。

这样就能用一个array数组动态记录用户勾选行的索引数组。

然后遍历这个array一行一行deleteRow不就可以了么。

然而实际情况并不是这样,当deleteRow的时候,该行后面的索引值全部向前挪一位。比如,一共有10行(第一行索引为0),我删除了第5行,后面6~9行的索引变成了5~8。这样对于之前记录在array中的索引值就不准确了,会导索引错乱,不能删掉想要删的行。

正确做法:deleteRow,getChecked和getRowIndex配合使用

如果能够将array中记录的index值从小到大排序,然后依次从后向前删除,就能解决行号错乱的问题了。(从后向前删,不会影响到前面行号的索引)。

根据这个思路,其实不用将array排序,利用datagird提供的方法,即可实现这个功能。

这里就不需要onChecked和onUncheck事件了。

用户在点击删除按钮时,首先通过getChecked拿到用户勾选的行的数据数组。

var deletedData = $('#dg').datagrid('getChecked');

然后通过for循环,从最后一行开始向前遍历,每次遍历,用getRowIndex方法得到该行的索引,然后用deleteRow删除该行即可!

for (var i = deletedData.length - 1; i >= 0; i--) {
  var rowIndex = $('#dg').datagrid('getRowIndex', deletedData[i]);
  $('#dg').datagrid('deleteRow', rowIndex);
}

效果展示

Easyui笔记2:实现datagrid多行删除的示例代码 

Easyui笔记2:实现datagrid多行删除的示例代码

html代码:

<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript" src="easyui_1.5/jquery.min.js"></script>
  <link rel="stylesheet" href="easyui_1.5/themes/icon.css">
  <link rel="stylesheet" href="easyui_1.5/themes/bootstrap/easyui.css">

  <script type="text/javascript" src="easyui_1.5/jquery.easyui.min.js"></script>
  <script type="text/javascript" src="easyui_1.5/locale/easyui-lang-zh_CN.js"></script>

  <script type="text/javascript" src="js/deleteRows.js"></script>
</head>
<body>
<div>
  <table id="dg" toolbar="#tb"></table>
  <div id="tb">
    <a id="delete" class="easyui-linkbutton" iconCls="icon-cancel" plain="true" onclick="deleteRows()">删除</a>
  </div>
</div>
</body>
</html>

js代码:

var dataStr = '{"total": 7, "rows": [{"test": 1}, {"test": 2}, {"test": 3}, {"test": 4}, {"test": 5}, {"test": 6}, {"test":7}]}';
var data = $.parseJSON(dataStr);

$(function () {
  $('#dg').datagrid({
    width: 'auto',
    height: 'auto',
    title: 'datagrid多行删除测试',
    fitColumns: true,
    rownumbers: true,
    columns: [[
      {
        field: 'checkbox',
        checkbox: true,
      },
      {
        field: 'test',
        title: 'test',
        width: '100px',
      }
    ]],
  });

  $('#dg').datagrid('loadData', data);

});

function deleteRows() {
  var deletedData = $('#dg').datagrid('getChecked');
  for (var i = deletedData.length - 1; i >= 0; i--) {
    var rowIndex = $('#dg').datagrid('getRowIndex', deletedData[i]);
    $('#dg').datagrid('deleteRow', rowIndex);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用于table内容排序
Jul 21 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
javascript实现炫酷的拖动分页
May 11 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 Javascript
JS实现最简单的冒泡排序算法
Feb 15 Javascript
详解JS中的attribute属性
Apr 25 Javascript
ES6中异步对象Promise用法详解
Jul 31 Javascript
javascript 构建模块化开发过程解析
Sep 11 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
JS中队列和双端队列实现及应用详解
Sep 29 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 #Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
Jan 14 #Javascript
Angular2 PrimeNG分页模块学习
Jan 14 #Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 #Javascript
详解jQuery事件
Jan 13 #Javascript
js实现固定宽高滑动轮播图效果
Jan 13 #Javascript
JavaScript利用闭包实现模块化
Jan 13 #Javascript
You might like
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
2015年党员公开承诺书范文
2015/01/22 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
抢劫罪辩护词
2015/05/21 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书