我有一个struts2-Jquery
网格。双击网格行时需要它
网格行键应该是caputerd并且要调用struts2动作(返回json),它从对应于key的数据库中获取详细信息并在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 ---
< 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');});
});
答案 0 :(得分:1)
<s:property />
标记在页面渲染时评估,不会更改。
可能您应该将对话框内容作为另一个jsp / action并使用ajax使用href
<sj:dialog />
属性调用该页面。并且当双击该行时,使用listenTopics
使对话框重新加载。