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

发布时间 - 2026-01-10 22:31:45    点击率:

如何实现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);
}

效果展示

 

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);
  }
}

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


# easyui  # datagrid  # 删除  # datagrid删除选中行  # 删除行  # JQuery EasyUI学习教程之datagrid 添加、修改、删除操作  # jquery easyui datagrid实现增加  # 修改  # 删除方法总结  # 勾选  # 行号  # 遍历  # 就不  # 就能  # 是这样  # 不就  # 实际情况  # 影响到  # 来完成  # 从小到大  # 大家多多  # 如何实现  # 有一个  # 准备用  # 变成了  # 使用了  # deletedData  # brush  # js 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 百度输入法ai组件怎么删除 百度输入法ai组件移除工具  如何用AI帮你把自己的生活经历写成一个有趣的故事?  如何注册花生壳免费域名并搭建个人网站?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  中国移动官方网站首页入口 中国移动官网网页登录  如何在橙子建站中快速调整背景颜色?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  javascript中对象的定义、使用以及对象和原型链操作小结  中山网站推广排名,中山信息港登录入口?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Python并发异常传播_错误处理解析【教程】  C语言设计一个闪闪的圣诞树  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel怎么上传文件_Laravel图片上传及存储配置  Android 常见的图片加载框架详细介绍  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  企业网站制作这些问题要关注  Python高阶函数应用_函数作为参数说明【指导】  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  如何快速完成中国万网建站详细流程?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  nginx修改上传文件大小限制的方法  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  桂林网站制作公司有哪些,桂林马拉松怎么报名?  音响网站制作视频教程,隆霸音响官方网站?  Python3.6正式版新特性预览  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Python结构化数据采集_字段抽取解析【教程】  linux top下的 minerd 木马清除方法  java ZXing生成二维码及条码实例分享  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何将凡科建站内容保存为本地文件?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  php485函数参数是什么意思_php485各参数详细说明【介绍】  如何用JavaScript实现文本编辑器_光标和选区怎么处理