jQuery easyUI 1.3.2 删除编辑功能 行号混乱的bug

最近使用jQuery easyUI 1.3.2 开发。在记录行设置一操作列,包含删除和编辑功能,操作后不reload重载(不发送新的数据库查询请求)。网上教程是在初始化数据的时候,将行号index传入,如下代码

formatter:function(value,row,index){
if (row.editing){
var s = ‘<a href="javascript:void(0);" class="savebtn" onclick="saverow("+index+")">保存</a> ‘;
var c = ‘<a href="javascript:void(0);" class="cancelbtn" onclick="cancelrow("+index+")">取消</a>‘;
return s+c;
} else {
var e = ‘<a href="javascript:void(0);" class="editbtn" onclick="editrow("+index+")">编辑</a> ‘;
var d = ‘<a href="javascript:void(0);" class="delbtn" onclick="deleterow("+index+")">删除</a>‘;
return e + d;
}
}

  

开始没有发现问题。能删除能编辑。后来发现,连续删除,或者删除后编辑,将出现很多奇怪的bug,比如删除错误数据,点击编辑,是另外的行触发了。究其原因,是这个行号index的问题。因为index是在初始化数据时定死的,但执行删除操作后,各行index是会变更的。而代码中的a标签调用的onclick方法里面的index已经固定,所以bug就来了。

最新版的1.4.1不知道有没有针对这个bug或者效果上做了调整,反正网上的处理方法很多是教直接修改easyUI的源码。

这里介绍一个简便一点的方法。

首先,将onclick方法传入index改为传this。

formatter:function(value,row,index){
if (row.editing){
var s = ‘<a href="javascript:void(0);" class="savebtn" onclick="saverow(this)">保存</a> ‘;
var c = ‘<a href="javascript:void(0);" class="cancelbtn" onclick="cancelrow(this)">取消</a>‘;
return s+c;
} else {
var e = ‘<a href="javascript:void(0);" class="editbtn" onclick="editrow(this)">编辑</a> ‘;
var d = ‘<a href="javascript:void(0);" class="delbtn" onclick="deleterow(this)">删除</a>‘;
return e + d;
}
}

  

然后,再各个onclick方法里面,就不能直接获取index使用了,需要改为

$(item).parents("tr").click();
var row = $dg.datagrid(‘getSelected‘);
var rowIndex = $dg.datagrid(‘getRowIndex‘, row);

  

用js控制点击时间,然后整行选中,再获取行号,搞掂。

效果图:

行内编辑

时间: 2024-10-23 23:02:29

jQuery easyUI 1.3.2 删除编辑功能 行号混乱的bug的相关文章

jQuery如何动态添加具有删除按钮的行

jQuery如何动态添加具有删除按钮的行:在实际用中,如果要操作表格的话,那最多的莫过于添加和删除行的操作,一般情况下,动态添加的行也可以动态删除,下面就简单介绍一下如何实现此操作,虽然比较简单,但是还是希望能够或多或少能够给需要的朋友带来一定的帮助.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author"

jQuery Mobile 实现苹果滑动删除闹钟功能的几点总结

1.jquery给动态添加的元素添加事件 在jquery推出新版本,使用.on()以前,我们会用.live()来为动态添加的代码绑定事件,但是现在jQuery用.on()替代了.live() 先看个.live()实例 $("a").live("click", function () { $("#111").append("ok"); }); 再看一个.on()的实例 $("body").on("c

Editable DataGrid 实现列表新增编辑功能

今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户也可以更新一个或多个行. 下面是我在项目中的实现代码: 第一步:引用 easyui.css jquery-1.8.1.min.js jquery.easyui.min.js 第二步:Html和Javascript代码 <h2>Editable DataGrid Demo</h2> &l

第二百一十三节,jQuery EasyUI,NumberBox(数值输入框)组件

jQuery EasyUI,NumberBox(数值输入框)组件 功能:只能输入数值,和各种数值的计算 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 NumberBox(数值输入框)组件的使用方法,这个组件依赖 于 ValidateBox(验证框)组件. 一.加载方式 class 加载方式 <input type="text" class="easyui-numberbox" value="10

Easyui Datagrid 修改显示行号列宽度

EasyUI中Datagrid的第一列显示行号,可是如果数据量大的的时候,显示行号的那一列数据会显示不完全的. 可以通过修改Datagrid的样式来解决这个问题,在样式中加入下面这个样式,就可以自己修改显示行号列的宽度了 .datagrid-header-rownumber,.datagrid-cell-rownumber{ width:40px; }

Jquery EasyUI的添加,修改,删除,查询等基本操作介绍

http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套前台控件,于是在网上找了一些参考示例.写了一些基本的增删改查功能,算是对该控件的基本入门.后续有时间继续深入学习. 在学习jquery easyui前应该先到官网下载最新版本http://www.jeasyui.com/download/index.php 先看一下运行后的页面 1.列表展示 2.新

jQuery EasyUI使用教程之创建展开行详细编辑表单的CRUD应用

当切换datagrid视图到"detailview"时,用户可以展开一行来显示该行下面的任何详细信息.此功能允许用户为放置在行详细信息面板中的编辑表单提供恰当的布局.在本教程中,我们使用DataGrid组件来减少编辑表单所占用的空间. 查看演示 Step 1:在HTML标记中创建DataGrid <table id="dg" title="My Users" style="width:550px;height:250px"

写一个基于jQuery.easyui 的可编辑表格插件

最近项目前端使用 jquery+easyui来做,用了几个月,觉得easyui是一个很不错的开源前端UI框架, 虽然偶尔会遇到一些小问题,但是凭借多年前端开发的实力积累 都一一解决了,其中比较典型的就是 这个 easyui.editgrid插件了,是基于easyui.datagrid扩展的.其实只用easyui.datarid也能实现 类似的功能,但是速度很慢,用户体验极差,所以抛弃了原来easyui.datagrid  中编辑功能的架构 自己扩展实现了其可编辑部分,就是现在的easyui.ed

雷林鹏分享:jQuery EasyUI 应用 - 创建展开行明细编辑表单的 CRUD 应用

当切换数据网格视图(datagrid view)到 'detailview',用户可以展开一行来显示一些行的明细在行下面.这个功能允许您为防止在明细行面板(panel)中的编辑表单(form)提供一些合适的布局(layout).在本教程中,我们使用数据网格(datagrid)组件来减小编辑表单(form)所占据空间. 步骤 1:在 HTML 标签中定义数据网格(DataGrid) url="get_users.php" toolbar="#toolbar" fitC