JSON数据未在Jqgrid中填充

时间:2014-12-05 10:08:22

标签: vb.net jqgrid jqgrid-asp.net

我的代码隐藏中有一个方法,它将返回字符串jSON数据。我用AJAX调用调用了这个,我得到了数据。但我无法将数据加载到Jqgrid。

$("#tblFormData").jqGrid(
      {
          url:"Forms.aspx/ConvertDataTabletoString",
          datatype: 'jsonstring',
          colNames: ['Category_Id', 'Category'],
          colModel: [
                         { name: "Category_Id", index: "Category_Id", editable: false },
                         { name: "Category", index: "Category", editable: true }
          ],

          viewrecords: true,
          loadonce: true,
          gridview: true,
          autoencode: true,
         
          rowNum: 10000,



      });

以下是我使用Ajax调用

调用的数据

[
   {
      “CATEGORY_ID”:1,       “类别”:“sss表格”

},    {
      “CATEGORY_ID”:1,       “类别”:“sss表格”    }    ]

因此,如果我将此分配给变量,然后将其分配给gridview,它工作正常。但这不是直接的。

 var subgridData1 = [
    {
        "Category_Id": 1,
        "Category": "sss Forms"
    },
    {
        "Category_Id": 1,
        "Category": "sss Forms"
    },
   
   ]

    $.ajax({
    type: "POST",
    url: "Forms.aspx/ConvertDataTabletoString",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {

        debugger;
        //var formJsondata = msg.d;
        $("#tblFormData").jqGrid(
       {
           data: subgridData1,
           datatype:'json',
           colNames: ['Category_Id', 'Category'],
           colModel: [
                          { name: "Category_Id", index: "Category_Id", editable: false },
                          { name: "Category", index: "Category", editable: true }
           ],
          
           viewrecords: true,
           loadonce: true

         
       });

    }
});

1 个答案:

答案 0 :(得分:0)

从服务器返回的确切数据是什么? (您可以使用测试数据附加您的问题,您可以使用Internet Explorer / Chrome / Firefox的开发人员工具来跟踪确切的HTTP流量)。您使用dataType: "json"contentType: "application/json; charset=utf-8"选项进行Ajax调用。你真的还需要拨打JSON.stringify(见var mydata = JSON.stringify(msg);行)。如果要求您在服务器端进行不必要的JSON到JSON的转换。典型错误是服务器端的{strong>不需要调用JavaScriptSerializerDataContractJsonSerializer,并从Web方法返回字符串而不是对象。您应该删除服务器端的呼叫,并且您已经将msg作为对象。

success内的代码似乎也是错误的。您没有指定datatype参数,因此将使用默认值"xml"。参数datastr将被忽略,并且url: ""的请求将被完成。期望从服务器获取XML格式。 取决于从服务器返回的数据的格式,您需要使用datatype: "jsonstring"datatype: "local"

或者,您可以添加url: "Forms.aspx/ConvertDataTabletoString"并将datatype: "json"loadonce: true选项一起使用到jqGrid选项列表中。不需要单独的Ajax调用。

您应该向jqGrid添加gridview: trueautoencode: true选项。如果您不想使用本地分页,则应添加寻呼机选项(或toppager: true)或使用rowNum: 10000。您应该考虑将key: true属性添加到Category_Id列。