jqGrid重载数据类型:每个请求的本地

时间:2013-06-23 11:48:14

标签: jqgrid

我正在使用jqGrid,但由于我的服务器端技术,我无法直接调用URL来获取数据,只能通过第三方代理发布到服务器。我的目标是能够通过调用我自己的JavaScript函数将数据加载到Grid中,该函数调用服务器并返回JSON字符串。

我尝试了什么:而不是

url:'http://127.0.0.1/products/index.php’,
datatype: 'json',

我有

datastring:init(),
datatype: 'jsonstring',

我的init()函数执行服务器端调用。它适用于初始页面加载。然而,它再也不会被称为当我在页面之间跳转,或更改要查看的行数时。我需要它来回忆我的init函数来刷新数据库中的数据。但是,它不会多次调用我的init()函数。我认为它认为这是一个永远不会改变的硬编码字符串。

我尝试手动调用$("#mygrid").trigger("reloadGrid");,但它似乎也没有用。

我的网格是:

<script type="text/javascript">
$(function(){
  $("#list").jqGrid({
    datastr:init(),
    datatype: 'jsonstring',
    mtype: 'GET',
    beforeRequest: beforeReq,
    pager: '#pager',
    rowNum:5,
    rowList:[5,10,30],
    sortname: 'invid',
    sortorder: 'desc',
    grouping:true,
    viewrecords: true,
    gridview: true,

  });
});
</script>

我试着打电话

$("#list").setGridParam({datatype:'jsonstring', page:1}).trigger('reloadGrid');

我尝试了Oleg的建议herehere,但它似乎仍然没有再次调用我的init函数。

1 个答案:

答案 0 :(得分:1)

您在创建网格之前 当前代码调用init() 。然后使用从init()返回的结果创建网格。

如果您确实需要使用datatype: 'jsonstring'(而不是datatype: "local"使用其他data参数),那么您可以在调用datastr之前重置reloadGrid参数的值}。相应的代码可以是以下内容:

$("#list").setGridParam({
    datatype: "jsonstring",
    datastr: init()
}).trigger("reloadGrid", [{page: 1}]);