如何从jqgrid编辑URL

时间:2015-11-24 22:02:47

标签: json asp.net-mvc asp.net-web-api jqgrid free-jqgrid

在内联编辑之后,免费的jqgrid使用POST方法向ASP.NET MVC4 WebAPI控制器发送可变数量的列。 发布的数据包含下面的json字符串。

在POST正文中发布到控制器的json字符串看起来像:

{"Toode":"","Kogus":"0.0000",
 "Nimetus":"1","Mootyhik0_nimetus":"",
 "Reanr":"2",

"_oper":"edit","_rowid":"1673",

"_dokdata":"[
   {\"name\":\"Maksetin1_tingimus\",\"value\":\"\"},  
   {\"name\":\"Kinnitatud\",\"value\":\"False\"}]"

}

它有3个属性区域:

  1. 订单详情。动态属性"Toode":"","Kogus":"0.0000","Nimetus":"1","Mootyhik0_nimetus":"", "Reanr":"2" 此列表可能会根据用户首选项在运行时更改。
  2. 这是使用jqgrid extraparam: getDetails()设置创建的。

    1. 使用下划线“_oper”声明的固定属性:“edit”,“_ rowid”:“ 那些是 始终存在_oper和_rowid jqgrid会自动添加它们。

    2. 订单数据。固定属性_dokdata,其中包含json数组的动态属性{\"name\":\"Maksetin1_tingimus\",\"value\":\"\"},{\"name\":\"Kinnitatud\",\"value\":\"False\"}

    3. 这是从jqgrid colmodel。

      创建的

      此列表可能会在运行时更改,并且可能包含与p.1订单详细信息相同的属性名称。

      如何在控制器中获取此数据?可能它应该解析为两个词典。是否可以强制WebAPI将此数据作为类/集合传递给控制器​​,还是应该手动解析?

      jqgrid设置来自回答Using jqGrid's inline-editing with RESTful urls? 如果这使得数据传递更合理,那么这些和序列化方法可以改变。 生成的WebAPI应该具有易于理解的数据格式(良好的API),因为它也将被第三方应用程序使用。

          $.extend($.jgrid.defaults, {
              ajaxRowOptions: { contentType: "application/json", async: true },
              serializeRowData: function (data) {
                  var propertyName, propertyValue, dataToSend = {};
                  for (propertyName in data) {
                      if (data.hasOwnProperty(propertyName)) {
                          propertyValue = data[propertyName];
                          if ($.isFunction(propertyValue)) {
                              dataToSend[propertyName] = propertyValue();
                          } else {
                              dataToSend[propertyName] = propertyValue;
                          }
                      }
                  }
                  return JSON.stringify(dataToSend);
              }
          });
      

      更新

      serializeRowData更改为

              serializeRowData: function (data) {
                  return JSON.stringify({
                      headerData: $("#_form").serializeArray(),
                      rowData: data
                  } );
              }
      

      这会为headerData:

      生成膨胀的json
      {"headerData": [
      {"name":"Tasudok","value":"134"},
      {"name":"Kuupaev","value":"2015-11-23"},
      {"name":"Dokumnr","value":"135319"}
      ],
      
      "rowData": {"Toode":"",
       "Kogus":"0.0000",
       "Nimetus":"öäölä<a",
       "_rowsum":"0.00",
      "Id":"1639",
      "Dokumnr":"135319",
      "_oper":"edit",
      "_rowid":"1639"
      }
      }
      

      如何从headerData中删除name和value属性,使其包含属性名称和值对,如rowData:

      headerData: {
          "Tasudok": "134",
          "Kuupaev": "2015-11-23",
          "Dokumnr": "135319"
         }
      

0 个答案:

没有答案