2013-04-08 111 views
0

我需要使用从ajax调用接收到的数据填充我的jqGrid。这里是我的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

是否有一个原因,你不让jqGrid获取JSON数据本身,并用另一种方法加载它? – Mark 2013-04-08 12:00:22

+0

我需要我的表来加载不同的数据,这取决于我通过(动态)的参数(rowId)。 – pomkine 2013-04-08 12:08:57

+0

这就是我所怀疑的,你可以将其构建到jqGrid中并更改该参数,以便您的数据按照FYI动态变化。 – Mark 2013-04-08 12:15:29

回答

1

要让jqGrid的处理JSON本身并trasmit一个参数,因为它要求的一部分,您可以执行以下操作:

摆脱jsonReader部分的

添加以下参数到您的jqGrid设置

datatype: 'json', 
mtype: 'POST', 
url: '/Controller/ActionReturningJSONData' 

你想改变的jqGrid将发送时,它看起来对数据的参数(通过页面,刷新等),您可以随时拨打:

$('#gridName').jqGrid('setGridParam', { postData: { ValueName: Value }}); 

然后在您的控制器上,您只需评估“ValueName”参数即可将您提供的数据集更改回jqGrid。这应该是不那么混乱,然后把JSON交给jqGrid之外。

+0

谢谢!我无法更改控制器代码,但我可以使用'setGridParam'更改网格参数中的网址。所以我只是改变它,重新加载grib。似乎工作,thx。 – pomkine 2013-04-08 12:44:17