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 parseInt字符转化为数字函数使用小结
Nov 05 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
Oct 16 Javascript
如何用JavaScript实现动态修改CSS样式表
May 20 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
Oct 25 Javascript
JS实现图片垂直居中显示小结
Dec 13 Javascript
js分页之前端代码实现和请求处理
Aug 04 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
Vue程序化的事件监听器(实例方案详解)
Jan 07 Javascript
vue-router 路由传参用法实例分析
Mar 06 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
May 15 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
生成缩略图
2006/10/09 PHP
SMARTY学习手记
2007/01/04 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
js实现动态时钟
2020/03/12 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
基于scrapy的redis安装和配置方法
2018/06/13 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
pygame实现五子棋游戏
2019/10/29 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
教育科研先进个人材料
2014/01/26 职场文书
中学自我评价
2014/01/31 职场文书
运动会稿件50字
2014/02/17 职场文书
铅球加油稿100字
2014/09/26 职场文书
实习护士自荐信
2015/03/25 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python