struts2-Jquery
グリッドがあります。グリッド行をダブルクリックするときは、グリッド行キーをcaputerdし、キーに対応するデータベースから詳細をフェッチして結果をjqueryダイアログに表示するstruts2アクション(jsonを返す)を呼び出す必要があります。次の方法で実装しましたが、マッピングが正しくないため、ダイアログが表示されませんでした。
次に、セッションを使用して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');});
});