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 相关文章推荐
javascript引导程序
Oct 26 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
jQuery实现的进度条效果
Jul 15 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
jQuery回到顶部的代码
Jul 09 Javascript
js利用clipboardData实现截屏粘贴功能
Oct 12 Javascript
微信小程序 支付功能(前端)的实现
May 24 Javascript
vue中用H5实现文件上传的方法实例代码
May 27 Javascript
js实现本地时间同步功能
Aug 26 Javascript
webpack.DefinePlugin与cross-env区别详解
Feb 23 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
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
JS删除数组里的某个元素方法
2018/02/03 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
Python分治法定义与应用实例详解
2017/07/28 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
python列表推导式操作解析
2019/11/26 Python
python绘制动态曲线教程
2020/02/24 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
python绘制趋势图的示例
2020/09/17 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
历史学专业个人的自我评价
2013/10/13 职场文书
车工岗位职责
2013/11/26 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书