问题是这样的
我初始化一个没有postData的jqgrid,
并设置hiddengrid:true,
我想首先在没有请求的情况下初始化表,
然后会手动请求数据
js
var showRoleList = function($entityList,pagerId)
{
$entityList.jqGrid({
url:'servlet/RoleAction',
datatype: 'json',
height: 'auto',
jsonReader:
{
repeatitems : false,
userdata: "rows"
},
colNames:['ID','roleName','detail','action'],
colModel:
[
{name:'id',index:'id',hidden:true},
{name:'name',index:'name', width:100,sortable:false},
{name:'description',index:'description', width:400,sortable:false},
{name:'action',index:'action', width:40,sortable:false}
],
rowNum:10,
altRows:true,
autowidth:true,
mtype: "POST",
rownumbers: true,
rownumWidth: 30,
imgpath:'css/images',
sortorder:'desc',
viewrecords: true,
multiselect:true,
loadui:'disable' ,
gridview:true,
hiddengrid:true,
page:1,
pginput:true,
pager: pagerId,
sortname: 'dateEntered',
altclass:'ui-priority-secondary_1',
});
}
showRoleList($("#entityList0"),"#pEntityList0");
**$entityList0.jqGrid("setGridParam", {
postData:{ACTION:'userRelation',userId:user.id,typeName:'role',flag:true},
});**
**$entityList0.trigger("reloadGrid", [{page:1}]);**
的HTML:
<table id="entityList0"></table>
<div id="pEntityList0"></div>
但失败了
当我调用触发器时,可以发送请求,但是没有postData
没有参数可以发布到服务器
但是,如果我单击刷新按钮,它可以工作
我该如何解决这个问题
谢谢你的回答
最佳答案
我无法重现您的问题。唯一明确的语法错误是将flag:true},})
替换为flag:true}})
(删除逗号)。同样,您应将altclass:'ui-priority-secondary_1',}
替换为altclass:'ui-priority-secondary_1'}
。
所有代码都在$(document).ready(function() {/*here*/});
内部吗?
在代码中,变量user
和$entityList0
未初始化。您确定在上面的代码中使用set $entityList0=$("#entityList0")
并至少将user
初始化为{}
吗?
例如,还应该删除不推荐使用的imgpath
参数,并将sortname: 'dateEntered'
替换为sortname: 'name'
。
如果您发布使用的任何测试数据,我可以为您提供发布代码的网址,这些代码对我有用。
更新:好的!现在有了可以测试的代码,我看到了问题所在。问题是您尝试在第一个ajax请求结束之前启动第二个ajax请求。
您的网格具有datatype: 'json'
。在showRoleList($entityList0,'#pEntityList0');
行中,启动第一个ajax请求,然后立即就$entityList0.trigger("reloadGrid")
启动第二个ajax请求。第一个请求将内部变量$("#entityList0")[0].grid.hDiv.loading
设置为true,并且您启动的所有其他请求将被忽略,直到超时或服务器返回响应或错误为止。
在设置postData
参数之前,您可能真的不希望发送第一个请求。因此,您应该在jqGrid的初始化时使用datatype: 'local'
(在showRoleList
函数中)。然后,应将datatype: 'json'
设置为postData
:
$entityList0.jqGrid(
"setGridParam",
{
datatype: 'json',
postData: {
ACTION:'userRelation',
userId:'1111',
typeName:'role',
flag:true
}
}
);
或者,您将需要在重新加载网格之前中止先前的ajax调用。如果确实需要,我可以解释一下如何实现。