解决easyui datagrid行编辑后序号错乱的问题

问题描述:使用easyui的datagrid组件的行编辑功能,当确认某行编辑完成后,序号出现错乱,如下图所示。

解决方法:自定义函数,编辑完成后调用该函数,来修正序号。

函数代码:

function myFixRownumber(serialNumFieldName) {
	if (serialNumFieldName == undefined) {//行号来自grid本身的配置参数,即rownumbers: true
		$('div.datagrid-cell-rownumber').each(function (rowindex) {
			var realRowNumber = parseInt(rowindex) + 1;
			$(this).html(realRowNumber);
		});
	} else { //行号来自指定的自定义列
		$('tr.datagrid-row div.datagrid-cell-c2-' + serialNumFieldName).each(function (rowindex) {
			var realRowNumber = parseInt(rowindex) + 1;
			$(this).html(realRowNumber);
		});
	}
}

说明:本函数可应对两种情况

1. 行号来自datagrid配置参数,即datagrid的配置项rownumbers为true,此时调用该函数无需实参。

2. 行号来自指定的自定义列,典型自定义列如下:

{
    field: "serialno", title: "序号", align: "center", width: 60,
    formatter: function (value, row, index) {  
        var gridOpts = $('#pg').pagination('options');//pg为分页控件id
        return gridOpts.pageSize * (gridOpts.pageNumber - 1) + (index + 1);
    }
}

此时调用该函数需要将用于显示序号的自定义列的列名(如上面代码中为“serialno”)作为实参传递给该函数,与行的formatter函数配合来修正行号。

【改进】myFixRownumber函数修正了所有行,可以增加一个行索引参数,只修正被编辑的行或指定某行,以改善性能。

function myFixRownumber(currIndex, serialNumFieldName) { //一次修正一行
	if (serialNumFieldName == undefined) {//行号来自grid本身的配置参数
		$('tr#datagrid-row-r1-1-' + currIndex + ' div.datagrid-cell-rownumber').html(parseInt(currIndex) + 1);
	} else { //行号来自指定的自定义列
		$('tr#datagrid-row-r2-2-' + currIndex + ' div.datagrid-cell-c2-' + serialNumFieldName).html(parseInt(currIndex) + 1);
	}
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
EasyUI Datagrid 编辑后,可以通过以下步骤保存数据: 1. 获取编辑后的数据:在 Datagrid 编辑完成后,可以通过 `datagrid('getChanges')` 方法获取到修改的数据。 2. 发送数据到后台:使用 AJAX 技术将修改后的数据发送到后台进保存。可以使用 jQuery 中的 `$.ajax()` 方法或者 `$.post()` 方法实现。 3. 处理保存结果:后台保存数据完成后,需要返回相应的结果。可以使用 JSON 格式返回保存结果。根据返回结果,可以给出相应的提示信息。 下面是一个示例代码: ```javascript // 获取修改后的数据 var changes = $('#datagrid').datagrid('getChanges'); // 发送数据到后台保存 $.ajax({ url: 'save.php', type: 'post', data: {changes: JSON.stringify(changes)}, dataType: 'json', success: function(result){ if(result.success){ // 保存成功,刷新数据 $('#datagrid').datagrid('reload'); }else{ // 保存失败,给出相应的提示信息 alert(result.message); } } }); ``` 在后台处理保存数据的代码中,可以根据需求使用相应的技术进数据保存。例如,可以使用 PHP 的 PDO 技术进数据库操作,代码如下: ```php // 获取修改后的数据 $changes = json_decode($_POST['changes'], true); // PDO 连接数据库 $dsn = "mysql:host=localhost;dbname=mydatabase;charset=utf8"; $user = "myuser"; $pass = "mypassword"; $pdo = new PDO($dsn, $user, $pass); // 开始事务 $pdo->beginTransaction(); try { // 循环保存修改后的数据 foreach($changes as $change){ $id = $change['id']; $name = $change['name']; $age = $change['age']; // 更新数据库中的数据 $sql = "UPDATE mytable SET name=?, age=? WHERE id=?"; $stmt = $pdo->prepare($sql); $stmt->execute([$name, $age, $id]); } // 提交事务 $pdo->commit(); // 返回保存成功的结果 $result = array('success' => true); echo json_encode($result); } catch (PDOException $e) { // 回滚事务 $pdo->rollBack(); // 返回保存失败的结果 $result = array('success' => false, 'message' => $e->getMessage()); echo json_encode($result); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值