我正在使用jquery grid和Struts2。我已成功显示jquery网格。现在我想从jquery网格中选择行以及网格外的其他数据,并在我的struts动作中提交以进行处理。我从jquery网格中检索数据时遇到问题。任何人都可以帮助我如何访问我在我的行动中从jquery网格中选择的行?
这是我的jquery网格:
<s:form action="runTest" method="post">
<sjg:grid
id="gridTable"
formIds="mcp"
caption="Test Scripts"
dataType="json"
href="%{searchurl}"
pager="true"
gridModel="gridTDP"
rowList="10,15,20,30"
rowNum="30"
multiselect="true"
viewrecords="true"
reloadTopics="reloadItems"
loadonce="false"
viewsortcols="[true, 'horizontal', true]"
resizable="true"
>
<sjg:gridColumn name="idTestData"
index="idTestData"
key="true"
title="idTestData"
formatter="integer"
hidden="true"
/>
<sjg:gridColumn name="testName"
index="testName"
title="Test Name"
width="50"
sortable="true"
search="true"
searchoptions="{sopt:['eq','ne','lt','gt']}"
/>
<sjg:gridColumn
name="projectName"
index="projectName"
title="Project Name"
width="300"
sortable="true"
edittype="text"
/>
</sjg:grid>
<sj:submit value="Execute Test Scripts"/>
</s:form>
这是成功调用但未获取jquery网格行的runTest.action:
public String runTest() throws Exception{
Iterator<Test> gridIterator = gridTDP.iterator();
System.out.println(" running test--");
while(gridIterator.hasNext()){
System.out.println(" in the gridIterator");
}
return "success";
}
答案 0 :(得分:2)
如果我是对的,我认为这可行。如果不让我知道。
var checks=$("#gridtable").find('input[type=checkbox]');
var va =new Array();
// alert(checks.length);
for(var i=0;i<checks.length;i++)
{
if(checks[i].checked)
{
var p = checks[i].parentNode.parentNode;
var id=p.id;
va.push($("#gridtable").jqGrid('getCell',id,'cellvalue'));
// alert(va);
}
}
document.getElementById("hiddenVariableID").value=va;
cellvalue
是您要发送给操作类的值。
我认为在你的情况下它可以是任何列名。
在你的jsp中添加这行
<s:hidden id="hiddenVariableID" name="selectedRows" />
在您的操作类中为Getters
创建setters
和selectedRows
,类型为array
答案 1 :(得分:0)
为了解决这个问题,我使用了“looser”中提到的代码(非常感谢),并做了一些修改。我没有将selectedRows的值视为数组,而是将其视为具有逗号分隔值的String,例如,abc,def。然后在我的动作类中,我使用StringTokenizer来解析String以获取值。这是我的行动方法:
public String runTest() throws Exception{
System.out.println(" running test--");
StringTokenizer ids = new StringTokenizer(selectedRows, ",");
while (ids.hasMoreTokens()) {
int removeId = Integer.parseInt(ids.nextToken());
System.out.println(" test id is " + removeId);
}
return "success";
}