我正在使用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');
答案 0 :(得分:1)
您在创建网格之前 当前代码调用init()
。然后使用从init()
返回的结果创建网格。
如果您确实需要使用datatype: 'jsonstring'
(而不是datatype: "local"
使用其他data
参数),那么您可以在调用datastr
之前重置reloadGrid
参数的值}。相应的代码可以是以下内容:
$("#list").setGridParam({
datatype: "jsonstring",
datastr: init()
}).trigger("reloadGrid", [{page: 1}]);