我需要使用从ajax调用接收的数据填充我的jqGrid。这是我的jqGrid代码:
$("#discuss_table_answers").jqGrid({
datatype: "local",
jsonReader: {
root: "list",
repeatitems: false,
records: "size"
},
colNames: ['agentId', 'date', 'deleted', 'id', 'questionId', 'rating', 'reported', 'text'],
colModel: [
{name: 'agentId', index: 'agentId', width: 80, align: 'right', formatter:"number"},
{name: 'date', index: 'date', width: 80, align: 'right', formatter:"date"},
{name: 'deleted', index: 'deleted', width: 150, sortable: true
, formatter: function myformatter(cellvalue, options, rowObject) {
if (cellvalue) {
return "<p>Rejected</p>";
}
return "<button class='reject_question' style='height: 20px;width: 100px'>Reject</button>";
}
},
{name: 'id', index: 'id', width: 55,formatter:"number"},
{name: 'questionId', index: 'questionId', width: 90,formatter:"number"},
{name: 'rating', index: 'rating', width: 150, sortable: false,formatter:"number"},
{name: 'reported', index: 'reported', width: 150, sortable: false},
{name: 'text', index: 'text', width: 80, align: 'right'}
], height: "100%" });
添加数据的功能代码:
function addData (rowId) {
var ansTable = $("#discuss_table_answers");
ansTable.clearGridData(true);
$.getJSON("review2-admin/question/" + rowId + "/answers", function (data) {
console.log(data);
console.log(data['list'].length);
ansTable.setGridParam({data: data}).trigger('reloadGrid');
});
从萤火虫我看到我从服务器得到了正确答案:
{"size":2,"list":[{"id":15,"questionId":9,"agentId":7327516,"text":"лоол","date":1364882946000,"reported":false,"deleted":false,"rating":0},{"id":12,"questionId":9,"agentId":4405127,"text":"456456456","date":1364793241000,"reported":false,"deleted":false,"rating":2}]}
所以问题是从服务器获取的数据没有显示在网格中。
我尝试使用var testData = [
{list: {agentId: "7327516", date: "1364882946000", deleted: false, id: "15", questionId: "9", rating: "0",
reported: false, text: "лоол"}, size: 1}
];
等测试数据
它工作得很好,桌子得到了刷新。
答案 0 :(得分:1)
要让jqGrid处理JSON本身并传输参数作为其请求的一部分,您可以执行以下操作:
摆脱jsonReader部分
将以下参数添加到jqGrid设置
datatype: 'json',
mtype: 'POST',
url: '/Controller/ActionReturningJSONData'
如果您想要更改jqGrid在查找数据时发送的参数(通过页面,重新加载等),您可以调用:
$('#gridName').jqGrid('setGridParam', { postData: { ValueName: Value }});
然后在您的控制器上,您只需评估“ValueName”参数,即可将您提供的数据集更改回jqGrid。这应该不那么麻烦,然后将JSON交给jqGrid。