1

我正在使用 jqGrid,但由于我的服务器端技术,我无法直接调用 URL 来获取数据,只能通过第 3 方代理发布到服务器。我的目标是能够通过调用我自己的 JavaScript 函数将数据加载到网格中,该函数调用服务器并返回 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 在这里这里提出的建议, 但它似乎仍然没有再次调用我的 init 函数。

4

1 回答 1

1

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

如果你真的需要使用datatype: 'jsonstring'(而不是datatype: "local"附加参数),那么你可以在调用之前data重置参数的值。相应的代码可能如下:datastrreloadGrid

$("#list").setGridParam({
    datatype: "jsonstring",
    datastr: init()
}).trigger("reloadGrid", [{page: 1}]);
于 2013-06-23T17:39:39.943 回答