easyui行编辑:利用appendrow添加行 直接在行中编辑 ajax提交保存

效果如下:
点击添加按钮,在第二行的位置添加新行,点击单元格输入内容,点保存通过ajax提交。
修改则直接点击单元格修改,点保存提交。
这里写图片描述
这里写图片描述
这里写图片描述

代码如下:
首先table还是平常的table,只不过要在需要编辑的列加上editor:'text' 我这里只是编辑文本,所以是text,其他时间等类型请查api,
另外因为我触发修改的方式是直接点击单元格,所以table要加上onClickCell属性,然后重写onClickCell方法。

01. <code class="hljs javascript">$('#remark_dg').datagrid({
02. url:'',
03. columns:[[
04. {field:'cb',checkbox:true,align:'center'},
05. {field:'id',title:'编号',width:80,hidden:true},
06. {field:'text',title:'内容',width:80,editor:'text'}
07. ]],
08. toolbar:'#remark_tb',  //表格菜单
09. fit:true,
10. fitColumns:true,
11. loadMsg:'加载中...'//加载提示
12. rownumbers:true//显示行号列
13. singleSelect:true,//是允许选择一行
14. onClickCell: onClickCell,
15. queryParams:{   //在请求数据是发送的额外参数,如果没有则不用写
16. },
17. onLoadSuccess:function(data){
18. },
19. rowStyler:function(index,row){
20. }
21. });</code>

简单说明下可编辑的实现方法:
首先通过beginEdit让选中的行启动编辑,保存的时候,获得选中的行,通过row取到编辑的信息,使用ajax提交,提交完成,使用endEdit属性结束行编辑。

01. <code class="hljs javascript"><code class="hljs javascript"//可编辑行
02. var editIndex = undefined;
03. function endEditing(){
04. if (editIndex == undefined){return true}
05. if ($('#remark_dg').datagrid('validateRow', editIndex)){
06. $('#remark_dg').datagrid('endEdit', editIndex);
07. editIndex = undefined;
08. return true;
09. else {
10. return false;
11. }
12. }
13. function onClickCell(index, field){
14. if (editIndex != index){
15. if (endEditing()){
16. $('#remark_dg').datagrid('selectRow', index)
17. .datagrid('beginEdit', index);
18. var ed = $('#remark_dg').datagrid('getEditor', {index:index,field:field});
19. ($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();
20. editIndex = index;
21. else {
22. $('#remark_dg').datagrid('selectRow', editIndex);
23. }
24. }
25. }
26. function accept(){
27. if (endEditing()){
28. var row = $('#remark_dg').datagrid('getSelected');
29. var text = row.text;
30. var remarkid = row.id;
31. var typeid = $('#typeid').val();
32. $.ajax({
33. url:'${ctx}/typeRemark/addTypeRemark.do',
34. type:'post',
35. dataType:'json',
36. data:{
37. remarkid:remarkid,
38. text:text,
39. typeid:typeid
40. },
41. success:function(data){
42. if(data.status == 'success'){
43. $.messager.show({
44. title : '提示',
45. msg : '操作成功'
46. });
47. $('#dg').datagrid('load', {});
48. }else{
49. $.messager.show({
50. title : '提示',
51. msg : '操作失败,请联系管理员 ------'
52. });
53. }
54. },
55. error:function(){
56. $.messager.show({
57. title : '提示',
58. msg : '系统错误,请联系管理员------'
59. });
60. }
61. });
62. }
63. }
64. function addRemark(){
65. function addRemark(){
66. if (editIndex != undefined){
67. return ;
68. }
69. $('#remark_dg').datagrid('insertRow',{
70. index: 1,   // 索引从0开始
71. row: {
72. text:''
73. }
74. });
75. $('#remark_dg').datagrid('selectRow'1);
76. $('#remark_dg').datagrid('beginEdit'1);
77. var ed = $('#remark_dg').datagrid('getEditor', {index:1,field:'text'});
78. $(ed.target).focus();
79. editIndex = 1;
80. }
81. }</code></code>

这里有必要提一下,我的添加和修改方法用了一个方法accpet(),同时后台也用一个方法处理的,有需要的可以借鉴一下:
表现层用的是spring mvc,持久成用的hibernate:

01. <code class="hljs javascript"><code class="hljs javascript"><code class="hljs lasso">@RequestMapping(value = '/addTypeRemark.do',method = RequestMethod.POST)
02. @ResponseBody
03. public Map<String,String> addTypeRemark(String text,String typeid,@RequestParam(value ='remarkid', required = false)Integer remarkid,HttpServletRequest request){
04. Map<String,String>  map = new HashMap<String,String> ();
05. System.out.println(typeid);
06. try {
07. BatchType batchType=batchTypeMag.find(Integer.parseInt(typeid));
08. TypeRemark typeRemark = new TypeRemark();
09. if(remarkid!=null){
10. typeRemark = typeRemarkMag.find(remarkid);
11. }
12. typeRemark.setBatchType(batchType);
13. typeRemark.setText(text);
14. typeRemarkMag.saveOrUpdate(typeRemark);
15. map.put('status','success');
16. catch (Exception e) {
17. e.printStackTrace();
18. map.put('status','fail');
19. }
20. return map;
21. }</code></code></code>

也就是说,添加的时候,没有这条记录的id,修改的时候需要通过记录的id修改,所以可以判断一下。

这样,easyui动态编辑行就完成啦

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值