1

我有一个struts2-Jquery网格。要求在双击网格行时,网格行键应该是 caputerd 并调用 struts2 操作(返回 json),该操作从数据库中获取与键对应的详细信息并在 jquery 对话框中显示结果。我以以下方式实现,但由于映射不正确,对话框没有填充。

然后我使用 session 在 jsp 存储和读取,但每次都显示相同的值

我需要帮助来了解如何知道

$("#detailDialog").load("<s:url value="my-dialogAction"/>"+"?gridKey="+key);     
should returns success and only then to publish   
$.publish('loadSuccessConfirm');    

代码片段

---------Jquery 网格代码 ---------

< sjg:grid id="mytable" ..   
.. ..  
onDblClickRowTopics="popup"  
>  

< sjg:gridColumn .. />   
< sjg:gridColumn .. /> ..  

-------------java脚本---

< script type="text/javascript" >  
$.subscribe('popup', function(event, data) {  
    var key = $("#mytable").jqGrid('getGridParam','selrow');  
    $("#detailDialog").load("<s:url value="my-dialogAction"/>"+"?gridKey="+key);  
    $.publish('loadSuccessConfirm');  

});  

< /script> 

- - - - - - - - 对话 - - - - - -

< sj:div id="detailDialog" name="detailDialog" >  
< sj:dialog position="center" height="200" width="500" openTopics="loadSuccessConfirm"   name="dialog1"  id="dialog1" autoOpen="false"  >  

    < s:iterator value="#session.comparePorts" status="stat" var="stack">  
        < tr>  
        < td><s:property value="#stack.airPortFrom"/> </td>  
        < td><s:property value="#stack.transportMode"/></td>  
        < td><s:property value="#stack.svc"/></td>    
        < td><s:property value="#stack.calcCostLoad"/></td>  

        < /tr>  
        <  /s:iterator>  

< /sj:dialog>   

< /sj:div>  

更新

我编辑了如下脚本代码,它在成功后发布,但对话框仍然显示陈旧值并且没有刷新

$.subscribe('popup', function(event, data) {
    var key = $("#mepctable").jqGrid('getGridParam','selrow');
    $("#detailDialog").load("<s:url value="my-dialogAction"/>"+"?gridKey="+key,
        function() { alert("success");$.publish('loadSuccessConfirm');});

});
4

1 回答 1

1

标记在页面呈现时进行评估,<s:property />并且不会更改。

可能您应该将对话框内容作为另一个 jsp/action 并使用 ajaxhref使用<sj:dialog />. 并用于listenTopics在双击该行时重新加载对话框。

https://code.google.com/p/struts2-jquery/wiki/DialogTag

于 2013-01-25T01:32:13.750 回答