2013-01-07 49 views
0

我使用的是struts 2.3.7,struts2-jquery-grid-plugin-3.5.0和hibernate 3.6。 我想在ajax調用後重新加載jqgrid。如何實現一個jqgrid上的ajax調用成功

我有一個jDialog框有三個按鈕,點擊按鈕後,我們希望執行一些操作,如Ajax調用之後,我必須重新加載jqgrid如何實現這一點。

我的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> 

單擊列「阿克頓」的JDialog的盒子打開,我必須點擊任何按鈕,即Approove,拒絕後按鈕來執行一些操作。完成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"); 
     } 

enter image description here

回答

3

您需要觸發重載函數在Ajax調用成功則只有美國可以重新加載網格。

$("#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應該返回成功或錯誤。

+0

請問你給我舉個例子,我試過了上面的代碼,但是上面的代碼執行後,瀏覽器每次都崩潰了 –

+0

你能告訴我你的ajax函數嗎? – muthu

+0

請檢查編輯部分我的問題 –