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实现文本编辑器_光标和选区怎么处理

