我正在使用Struts2网格。我想在重新加载子网格时发送一个javascript对象和rowId。我使用的代码如下。我在onSubGridRowExpanded
上调用以下函数 $.subscribe('subgridExpanded', function(event, data) {
var rowId = event.originalEvent.row_id;
var pData = {
'sId' : rowId,
'sJSONStr' : sJsonList // sJsonList is javascript global variable
};
$("#packageSubGrid").jqGrid('clearGridData').jqGrid('setGridParam',
{
datatype: 'local',
page : 1,
postData: pData,
data:data.packageSubList
}).trigger("reloadGrid");
});
我无法重新加载子网格。服务器端的方法被调用,但参数为null。 struts2中的网格代码如下所示
<s:url id="shipmentUrl" action="getGrid" />
<sjg:grid id="shipmentGrid" href="%{shipmentUrl}" dataType="json"
caption="S Details" gridModel="shipmentList" requestType="post"
formIds="mForm" multiboxonly="true" multiselect="true"
multiselectWidth="50" onSelectAllTopics="onSelectAll"
rowList="100,500,1000" pager="true" sortorder="desc"
navigator="true" navigatorSearch="false" navigatorAdd="false" navigatorEdit="false" navigatorDelete="false"
rowNum="1000" rownumbers="false" gridview="false" onSubGridRowExpanded="subgridExpanded"
>
//subgrid code
<s:url id="packageSubUrl" action="getSubGrid" />
<sjg:grid id="packageSubGrid" subGridUrl="%{packageSubUrl}" dataType="json"
sortorder="desc" cssStyle="float: left;" requestType="post" gridview="true"
gridModel="packageSubList"
footerrow="false"
userDataOnFooter="false" onGridCompleteTopics="subGridComplete" >
<sjg:gridColumn name="pId" index="pId" id="pId"
title="P Id" align="center" sortable="false" width="110" />
<sjg:gridColumn name="pName" index="pName" id="pName" title="P Name"
align="center" sortable="false" width="110" />
</sjg:grid>
<sjg:gridColumn name="sName" index="sName"
id="sName" title="S Name" align="center"
sortable="true" width="105" />
<sjg:gridColumn name="sId" index="sId"
id="sId" title="S" key="true" />
</sjg:grid>
所以我的问题是我无法在Struts2中找到任何关于如何使用subgrid而不是id发布额外参数的内容。所以我试图使用jqgrid方法来做,但是pData在服务器端变为null,而且我无法使用data.packageSubList
通过setGridParam
重新加载子网格,这通常适用于普通网格。