【发布时间】:2011-02-19 23:11:43
【问题描述】:
我正在使用 jqgrid。我的页面有三个选项卡,每个选项卡包含一个不同的网格。所有网格都有不同的 id。选项卡的内容是通过 AJAX 请求延迟获取的。现在在渲染所有三个网格之后,我尝试通过函数重新加载网格
jQuery("#myOffersTable").trigger('reloadGrid');
只有上次加载的网格会重新加载,其他网格不起作用。
例如,如果 grids load seq 为 : 1-2-3 那么此代码仅适用于 grid 3 但如果 seq 是 3-2-1 那么它只适用于 1。
但是如果我尝试使用导航栏上的重新加载按钮重新加载网格,它工作正常。
更新:
我正在使用 Struts2 jQuery 插件。它使用 jqGrid 3.6.4 我使用 ajax 加载 json 数据。
以下是我的网格的定义。
<div id='t1'>
<s:url id="offersurl" action="offers"/>
<sjg:grid
id="offerstable"
caption="Customer Examples"
autoencode="false"
dataType="json"
href="%{offersurl}"
pager="true"
navigator="true"
navigatorAdd="false"
navigatorDelete="false"
navigatorEdit="false"
navigatorSearch="false"
gridModel="offers"
rowList="10,15,20"
rowNum="15"
rownumbers="true"
onCompleteTopics="addAcceptButtons"
filter="true"
>
<sjg:gridColumn name="id" index="id" title="ID" formatter="integer" sortable="false" search="false"/>
<sjg:gridColumn name="offeror" index="offeror" title="Offeror" sortable="true" search="false"/>
<sjg:gridColumn name="itemOffered" index="itemOffered" title="ItemOffered" sortable="false" search="true" searchoptions="{sopt:['eq']}"/>
<sjg:gridColumn name="quantityOffered" index="quantityOffered" title="QuantityOffered" sortable="false" search="true" searchoptions="{sopt:['eq','lt','gt']}"/>
<sjg:gridColumn name="expectedItem" index="expectedItem" title="ExpectedItem" sortable="false" search="true" searchoptions="{sopt:['eq']}"/>
<sjg:gridColumn name="expectedQuantity" index="expectedQuantity" title="ExpectedQuantity" sortable="false" search="true" searchoptions="{sopt:['eq','lt','gt']}"/>
<sjg:gridColumn name="acceptOffer" index="acceptOffer" title="Accept Offer" search="false"/>
</sjg:grid>
</div>
我有三个这样的网格都有不同的 id 和所有这些东西。
每个网格上方都有一个搜索按钮,它调用以下函数,参数sel.sel为每个网格对应的1,2或3
function search(sel)
{
alert("search");
if(sel==1)
{
tradeOffer = $("#games").val();
var srchValue = $("#srchoptions").val();
$.ajaxSetup({
data: {'gameId': tradeOffer},
});
jQuery("#offerstable").jqGrid('setGridParam',{url:"offers.action?q=1&srch="+srchValue,page:1});
//jQuery("#offerstable").trigger('reloadGrid');
$("#offerstable").trigger("reloadGrid");
}
else if(sel==2)
{
myTradeOfferGame = $("#my").val();
$.ajaxSetup({
data: {'gameId': myTradeOffer},
});
jQuery("#myOffersTable").jqGrid('setGridParam',{url:"offers.action?q=1",page:1});
jQuery("#myOffersTable").trigger('reloadGrid');
}
else if(sel==3)
{
acceptedTradeOfferGame = $("#accepted").val();
$.ajaxSetup({
data: {'gameId': acceptedTradeOffer},
});
jQuery("#acceptedtable").jqGrid('setGridParam',{url:"offers.action?q=1",page:1});
jQuery("#acceptedtable").trigger('reloadGrid');
}
}
每个网格都会调用该函数,但是
jQuery("#acceptedtable").trigger('reloadGrid');
仅适用于最后加载的网格。
【问题讨论】:
-
您使用哪个版本的 jqGrid?您如何将数据加载到网格中(ajax、xml、本地)?您能否发布一个有问题的小代码示例。提示:jqGrid 从服务器接收的数据(xml/json)可以保存在文件中,而不是加载动态数据,可以加载具有相同结果的静态文件。如果可以重现该问题,也可以找到解决方案或变通方法。
-
嗨,奥列格,请查看编辑后的帖子。
标签: jquery jqgrid struts2 grid