【发布时间】:2011-03-17 09:12:16
【问题描述】:
我正在尝试根据用户在文本框中输入的值向我的 jqGrid 动态添加行。有一种方法可以从服务器获取 Json 请求,但我在获取它以添加实际数据时遇到问题。
这是 jqGrid 代码:
function RenderGrid(grid) {
$("#queryGrid").jqGrid({
datatype: grid.DataType,
mtype: grid.RequestType,
colNames: grid.ColumnNames,
colModel: grid.ColumnModel,
pager: $('#pager'),
rowNum: grid.MaxViewableRows,
caption: "Search",
width: grid.Width,
rowList: grid.MaxViewableRowOptions,
height: grid.Height,
loadtext: "Please wait...",
viewrecords: grid.ShowTotalRecords,
hidegrid: grid.HideEnabled,
forceFit: true
})
我没有设置 URL 选项,因为正如我之前提到的,数据来自其他地方。然而这是 colModel:
{"name":"id","index":"id","hidden":"true"},
{"name":"Customer","index":"Customer","sorttype":"Int32","editable":false,"width":216,"resizable":true},
{"name":"ShortName","index":"ShortName","sorttype":"String","editable":false,"width":216,"resizable":true},
{"name":"CorrespondenceName","index":"CorrespondenceName","sorttype":"String","editable":false,"width":216,"resizable":true}
这是获取 JSON 的代码:
function SearchGrid() {
$.ajax({
url: $.url("/MyController/MyAction"),
type: "POST",
dataType: "json",
data: {
Name: $('#Name').val(),
Fields: $('#Fields').text(),
},
success: ApplyDataToGrid //More on this later in the question
});
}
这一切似乎都很好。我认为问题不在于上述任何代码。这就是棘手的地方,这是我获取 JSON 对象以及尝试将其添加到网格的地方。
这是我返回的 JSON:
{"page":1,"records":1,"rows":[{"id":1,"cell":[94,"DAMIEN","IS AN IDIOT"]}],"total":1}
这是我用来(尝试)将数据添加到网格中的代码:
function ApplyDataToGrid(data) {
$("#queryGrid")[0].addJSONData(data, $("#queryGrid").bDiv, 0)
}
或
function ApplyDataToGrid(data) {
$("#queryGrid")[0].addJSONData(data)
}
这确实应用了页数和记录数,但它不显示应该添加 ID 和三列的行!
有什么想法吗?这让我疯狂! 提前致谢, 达米安
【问题讨论】:
-
能否在问题正文中包含完整的
grid,用于初始化$("#queryGrid").jqGrid?顺便说一句,您的代码有一些错误,例如"sorttype":"Int32"和"sorttype":"String"。sorttype的所有可能值都可以找到 here。我建议您使用data参数而不是addJSONDataahich 在大多数情况下具有优势。我发现用colModel的label选项替换colNames参数也很实用。