我的代码隐藏中有一个方法,它将返回字符串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
});
}
});
答案 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>不需要调用JavaScriptSerializer
或DataContractJsonSerializer
,并从Web方法返回字符串而不是对象。您应该删除服务器端的呼叫,并且您已经将msg
作为对象。
success
内的代码似乎也是错误的。您没有指定datatype
参数,因此将使用默认值"xml"
。参数datastr
将被忽略,并且url: ""
的请求将被完成。期望从服务器获取XML格式。 取决于从服务器返回的数据的格式,您需要使用datatype: "jsonstring"
或datatype: "local"
。
或者,您可以添加url: "Forms.aspx/ConvertDataTabletoString"
并将datatype: "json"
与loadonce: true
选项一起使用到jqGrid选项列表中。不需要单独的Ajax调用。
您应该向jqGrid添加gridview: true
,autoencode: true
选项。如果您不想使用本地分页,则应添加寻呼机选项(或toppager: true
)或使用rowNum: 10000
。您应该考虑将key: true
属性添加到Category_Id
列。