问题是这样的 我在没有 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>
但失败了 当我调用trigger时,可以发送请求,但没有postData
没有param可以发布到服务器
但如果我点击刷新按钮就可以了
我该如何解决这个问题
谢谢你的回答
答案 0 :(得分:2)
我无法重现你的问题。唯一明确的语法错误是flag:true},})
muss被替换为flag:true}})
(删除逗号)。以同样的方式,您应该将altclass:'ui-priority-secondary_1',}
替换为altclass:'ui-priority-secondary_1'}
。
$(document).ready(function() {/*here*/});
中是否有所有代码?
代码变量user
和$entityList0
未初始化。您确定,在上面的代码中使用集$entityList0=$("#entityList0")
并初始化user
至少为{}
吗?
您还应删除已弃用的imgpath
参数,并将sortname: 'dateEntered'
替换为sortname: 'name'
。
如果您发布了您使用的任何测试数据,我可以为您提供您发布的代码的URL以及对我有用的代码。
更新:好的!现在有了可以测试的代码,我会看到你的问题所在。问题是你尝试在第一个ajax请求结束之前启动第二个ajax请求。
您的网格有datatype: 'json'
。在第showRoleList($entityList0,'#pEntityList0');
行中,您启动第一个ajax请求,然后立即启动第{a}个$entityList0.trigger("reloadGrid")
。第一个请求将内部变量$("#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调用。如果确实需要,我可以解释如何实现这一点。
答案 1 :(得分:0)
好吧,我只是制作一个test.html
<html ...
<script type="text/javascript">
var $entityList0;
$(function(){
$entityList0 = $("#entityList0");
showRoleList($entityList0,'#pEntityList0');
$entityList0.jqGrid("navGrid",'#pEntityList0',{});
$entityList0.jqGrid("setGridParam",
{
postData:{ACTION:'userRelation',userId:'1111',typeName:'role',flag:true}
}).showCol("action");
$entityList0.trigger("reloadGrid");
});
var showRoleList = function($entityList,pagerId) {
$entityList.jqGrid({
url:'servlet/RoleAction',
datatype: 'json', height: 'auto',
jsonReader: {
repeatitems : false,
userdata: "rows"
},
colNames:['ID','roleName','detail','actiokn'],
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',
}); } </script>
</head>
<body>
<table id="entityList0"></table>
<div id="pEntityList0"></div>
</body>
</html>
第一次打开url test.html
时 HeadersPostPutHTMLXML
application/x-www-form-urlencoded
_search false
nd 1300458295847
page 1
rows 10
sidx dateEntered
sord desc
_search=false&nd=1300458295847&rows=10&page=1&sidx=dateEntered&sord=desc
然后我点击刷新按钮
HeadersPostPutHTML
application/x-www-form-urlencoded
ACTION userRelation
_search false
flag true
nd 1300458310960
page 1
rows 10
sidx dateEntered
sord desc
typeName role
userId 1111
_search=false&nd=1300458310960&rows=10&page=1&sidx=dateEntered&sord=desc&ACTION=userRelation&userId=1111&typeName=role&flag=true
你可以测试它
你可以看到结果不同了 这是一个简单的页面,你可以轻松测试!如果你能找到错误的地方请告诉我,谢谢你