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


相关推荐: lovemo网页版地址 lovemo官网手机登录  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  开心动漫网站制作软件下载,十分开心动画为何停播?  Laravel如何处理异常和错误?(Handler示例)  如何利用DOS批处理实现定时关机操作详解  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  微信h5制作网站有哪些,免费微信H5页面制作工具?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何确认建站备案号应放置的具体位置?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  如何用已有域名快速搭建网站?  如何快速搭建虚拟主机网站?新手必看指南  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  智能起名网站制作软件有哪些,制作logo的软件?  如何在企业微信快速生成手机电脑官网?  动图在线制作网站有哪些,滑动动图图集怎么做?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  网站制作价目表怎么做,珍爱网婚介费用多少?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel Session怎么存储_Laravel Session驱动配置详解  如何获取PHP WAP自助建站系统源码?  专业商城网站制作公司有哪些,pi商城官网是哪个?  JS实现鼠标移上去显示图片或微信二维码  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel如何实现多对多模型关联?(Eloquent教程)  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何在宝塔面板中创建新站点?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  python中快速进行多个字符替换的方法小结  如何在万网自助建站中设置域名及备案?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  魔毅自助建站系统:模板定制与SEO优化一键生成指南  QQ浏览器网页版登录入口 个人中心在线进入  Laravel如何配置Horizon来管理队列?(安装和使用)  装修招标网站设计制作流程,装修招标流程?  教学论文网站制作软件有哪些,写论文用什么软件 ?  制作企业网站建设方案,怎样建设一个公司网站?