0

私は struts 2.3.7、struts2-jquery-grid-plugin-3.5.0、および hibernate 3.6 を使用しています。ajax 呼び出しが行われた後に jqgrid をリロードしたい。

私は 3 つのボタンを持つ jDialog ボックスを持っています。ボタンをクリックした後、Ajax 呼び出しなどの操作を実行する必要があります。

私のjDialog

<sj:dialog 
         id="mybuttondialog"
        buttons="{
                'Approove':function() { approoveButton(); },
                'Cancel':function() { cancelButton(); },
                'Deny':function() { denyButton(); }
                }"
        autoOpen="false"
        modal="true"
        title="Assign Issues"
        width="375"
        resizable="false"
        draggable="true"
        closeTopics="closeThisDialog"
>

私のjqGridは

 <div id="targetDivToRefresh">
    <sjg:grid
        id="gridtable"
        caption="Issue-Summary"
        dataType="json"
        href="%{remoteurl}"
        pager="true"
        gridModel="gridModel"
        rowList="10,15,20"
        rowNum="15"
        rownumbers="true"
        reloadTopics="reloadGrid"
    >
        <sjg:gridColumn name="issue_id"  id="issueId"  index="id" title="Issue-ID" formatter="integer"  sortable="false"/>
        <sjg:gridColumn name="issue_description" index="id" title="Issue-Details"  sortable="false"/>
        <sjg:gridColumn name="issue_raised_date" index="date" title="Issue-Date"  formatter="date"  sortable="false"/>

        <sjg:gridColumn name="issue_id"   index="issues" title="Action" sortable="false" formatter="formatLink"/>
        <sjg:gridColumn name="assigned"  index="assigned" title="Assigned To"  sortable="false"/>
    </sjg:grid>
        </div>

「Acton」列をクリックすると、jDialog ボックスが開き、任意のボタン、つまり承認、拒否ボタンをクリックして操作を実行する必要がありました。ajax 呼び出しが完了したら、jqgrid をリロードする必要があります。私はcustomFormatterを次のように使用しています

function formatLink(cellvalue, options, rowObject) {

                      var issueId=rowObject.issue_id;

                        return "<a href='#' onClick='javascript:openDialog("+issueId+")'>" + issueId+ "</a>";

                }
                function openDialog(issue) {

                        global_id=issue;
                        $("#mybuttondialog").dialog().text('Your are going to assign Issue-Id:' + issue);
                        $("#mybuttondialog").dialog('open');

                }

ただし、グリッドをリロードするために次のようなことを試みました。

$("#gridtable").trigger("reloadGrid"); // where #gridtable is my jqGrid idName

私を助けてください、私は初めてjqgridを使用しています。

Edited Section

実際には ajax 呼び出しはデモ段階ですが、コードは次のとおりです。

function approoveButton()
        {
            $("#mybuttondialog").load("<s:property value='issueTrackerUrl'/>?id="+global_id);

        }

ここで issueTrackerUrl は ajax 呼び出しを成功させたアクションです。そして、ここでjqgridをリロードします

 function reload() 
        {
              $("#gridtable").trigger("reloadGrid"); 
        }

ここに画像の説明を入力

4

1 に答える 1

3

ajax 呼び出しが成功した場合はリロード関数をトリガーする必要があり、グリッドをリロードできるのは u だけです。

$("#mybuttondialog").load("<s:property value='issueTrackerUrl'/>?id="+global_id,  function(responseText, statusText, xhr)
        {
                if(statusText == "success")
                        alert("Successfully loaded the content!");
                       $("#gridtable").trigger("reloadGrid");
                if(statusText == "error")
                        alert("An error occurred: " + xhr.status + " - " + xhr.statusText);
        });

ajaxの成功でそれらの行を呼び出します。issueTrackerUrl は、成功またはエラーを返す必要があります。

于 2013-01-07T05:43:07.287 に答える