【问题标题】:jqGrid inline edit save does not save JSON rowjqGrid 内联编辑保存不保存 JSON 行
【发布时间】:2013-12-06 11:04:51
【问题描述】:

我已经为此苦苦挣扎了整整一周,找不到正确的解决方案....

我使用内联编辑,它只使用键和鼠标进行更新和编辑,但是我可以让行来编辑和更改某些内容,但是在输入时我无法将行保存到服务器也无法捕获行更新后(输入)。 我到处搜索如何解决这个问题,但在任何地方都找不到合乎逻辑的解决方案。

我在从 OnRowSelect 调用的单独函数中使用的代码:

function savedata (id, lastsel, $grd) { 
  lastStatus = $('#_grid_action').val();
  alert(id + ' ' + lastStatus);alert(id + ' ' + lastsel + ' ' + lastStatus );
  if (id === lastsel && lastStatus == 1) {   
     var rowData = $grd.jqGrid("getRowData",id);
     var dataToSend = JSON.stringify(rowData);
     alert('if equal: ' + dataToSend);
  } 
  if (id !== lastsel && lastStatus == '')
  {
     lastStatus = 1;
     $grd.jqGrid('editRow', id, 
       {
          keys : true,
          oneditfunc : function(id) {   
            alert ("edited: " + id); 
          },
          successfunc : function(id) {   
            alert ("succeed");    
            return true;
           },
           url : "dataServices/objects.asmx/InvokeTest",
           extraparam : 
           { 
             'item': 'testedti'
           },
           aftersavefunc : function(id) {   
              alert ("after save");    
              return true;
           },
           errorfunc: null,
           afterrestorefunc : null,
           restoreAfterError : true,
           mtype : "POST"
        });
        lastsel = id; 
        $('#_grid_action').val('1');
      }
 }

主要问题是: 1.输入行数据后什么都消失了,因为我在任何地方都找不到任何东西,这是如何“自动”保存到我的网络服务以及它使用的参数,与extraparam一样,我似乎只能用于静态参数而不是捕获行数据,将其转换为 JSON 并将其发送到一些预定义的参数。 我实际上尝试完成的是在editrow中使用saverow根据onenter事件将我想要的数据发送到服务器几乎所有“func”都在那里但没有像“beforesavefunc”这样的东西,也许我错过了一些非常简单的东西,但是哪里都找不到了

确认来自 Olegs 公司的文件,editrow 应该能够直接处理 saverow,因为它很棒 (http://www.trirand.com/jqgridwiki/doku.php?id=wiki%3ainline_editing#saverow)。

更新: 我现在可以通过添加到 serializeRowData return { q: JSON.stringify(postData) } 来获得,但现在它给出的响应是我有一个无效的 JSON 原语...... 有人知道为什么,因为我使用 JSON.stringify .....

会得到一些帮助 )))

【问题讨论】:

    标签: jquery json jqgrid


    【解决方案1】:

    好的,对于遇到相同问题的其他人,有一个非常简单的解决方案可以使用您自己的参数将完整的行数据发布回服务器... 还是真的不明白别人是怎么做到的,但是…………

    无论如何感谢[1]:"Message":"Invalid web service call, missing value for parameter: \u0027haha\u0027,我想出了一个非常简单的解决方案:

    serializeRowData: function (postData) { return JSON.stringify({data: JSON.stringify(postData)}); }, rest of your stuff.
    

    显然,如果您查看代码 [2]:https://github.com/tonytomov/jqGrid/blob/master/js/grid.inlinedit.js#L217 jqGrid 只接受整个字符串并且无法添加任何参数,也不会使其成为 JSON,但是这是解决方案,希望一些你可以用这个节省一个星期,因为我找不到它))))

    编码愉快!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 2016-08-29
      相关资源
      最近更新 更多