2014-02-09 35 views
0

在我的Struts2/Java应用程序中,我允许用户从JQGrid发送数据到应用程序。我正在使用“saverow”函数遍历每个选定的行并提交编辑后的单元格。这个函数在我的JSP中包含的单独的js文件中。不使用表格更新单个JSP页面元素

function editRows(){ 


    for (...){ 
     ... 
     ... 
     ... 
     jQuery('#myGrid').jqGrid('saveRow,rowID,false,null,null,aftersavefunc); 
    } 

    getResponse(); 

} 

从此函数提交数据后,我的动作类中的许多类变量都会更新。我使用aftersavefunc来设置隐藏的jqgrid单元格的值(jqgrid'setCell'),以便我可以稍后从网格中调用它们。

我有额外的值,只是显示在一个div。这些值在应用程序执行后也会更新。 当我执行上面提到的editRows()函数时,下面的div已经可见并且显示div中每个字段的值。这些初始div值是先前表单提交的结果。这是div在我的JSP中的样子。

<div id="headerBar"> 
    <table> 
     <tr> 
      <td>Total Items: <s:property value="strutsActionName.totalItems</td> 
      ... 
      ... 
      ... 
     </tr> 
    </table>  
</div> 

因此,例如,正在执行我的功能editRows时,股利已经显示出了在网页上“TOTALITEMS”的值。它只是看起来是这样的:功能editRows已经执行

Total Items: 5 

后,“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

属性标记在服务器端处理,因此在将请求发送到服务器之前不会更新它。

正如我所看到的那样,这样做的最好方法是将属性值放入具有像span或p这样的id的元素中,然后使用document.getElemenrById检索该元素并在检索后从javascript中更改其内容它的新价值。

+0

只是需要一些澄清。你说从'javascript'改变它。不确定你的意思。所以我会有​​。然后getElementById(totalItems).reload。是你的意思吗? –

+0

是或多或少,但把跨度放在td,所以你可以改变仅文本 – vbazaga86

相关问题