在我的Struts2 / Java应用程序中,我允许用户从JQGrid向应用程序发送数据。我正在使用“saverow”函数循环遍历每个选定的行并提交已编辑的单元格。这个函数在一个单独的js文件中,它包含在我的JSP中。
function editRows(){
for (...){
...
...
...
jQuery('#myGrid').jqGrid('saveRow,rowID,false,null,null,aftersavefunc);
}
getResponse();
}
从此函数提交数据后,我的操作类中的许多类变量都会更新。我使用aftersavefunc来设置隐藏的jqgrid单元格的值(jqgrid'setCell'),以便我稍后可以从网格中调用它们。
我有其他值,只显示在div中。这些值在应用程序执行后也会在应用程序中更新。 在我执行上面提到的editRows()函数时,以下div已经可见并显示div中每个字段的值。这些初始div值是结果提交的上一个表格。这是我的JSP中div的样子。
<div id="headerBar">
<table>
<tr>
<td>Total Items: <s:property value="strutsActionName.totalItems</td>
...
...
...
</tr>
</table>
</div>
因此,例如,当我的函数editRows正在执行时,div已经在网页上显示“totalItems”的值。它看起来像这样:
Total Items: 5
执行editRows函数后,“totalItems”的值已在应用程序中更新。 java动作类具有totalRows的最新值。
当循环结束时,editRows函数正在调用另一个函数getResponse()。 getResponse函数用于获取我使用“saverow”的“aftersavefunc”参数设置的隐藏jqgrid值。它使用jqGrid('getCell')来获取那些隐藏的jqGrid单元格的更新值。
我想让getResponse()函数也刷新“totalItems”的值。该值不在jqGrid中。我需要刷新单个字段并获取更新的值。例如,在editRows()完成后,“totalItems”的值可能会从5加倍到10。
在我的getResponse()函数中,我尝试使用以下内容更新此值,但它没有用。
document.getElementById('headerBar').reload
我只需更新此div中的值而无需提交表单。
答案 0 :(得分:0)
属性标记在服务器端处理,因此在将请求发送到服务器之前不会更新。
正如我所看到的,最好的方法是将属性值放在一个id为span或p的元素中,然后使用document.getElemenrById检索该元素并在检索其后从javascript更改其内容新价值。