2011-07-10 59 views
1

グリッドパラメータを変更する方法を見つける必要があります。シナリオの説明をしましょう。 私は自分のページに2つのjqGridオブジェクトを持っていて、データをフィードするリモートWebサービス関数を呼び出しています。最初のオブジェクトはメイングリッドで、ユーザーが列内にあるボタンをクリックすると、アプリケーション内に2番目のグリッドが表示されたダイアログが表示されます。jqgridの再初期化

第2のグリッドには、第1のグリッド選択行に含まれるフィールドに関連するデータが含まれます。だから私は実際に持っているコードは次のとおりです。

function showDialog(customerID, wsBaseUrl, sl) { 
    var title = ""; 
    var dlg = $("#pclist"); 
    //Set the title with the value returned 
    dlg.dialog("option", "title", title); 
    createGrid(customerID, wsBaseUrl, sl); 
    //Open the dialog 
    dlg.dialog('open'); 
} 

function createPCGrid(customerID, wsBaseUrl) { 
    var pc_grid = $('#pcgrid'); 
    pc_grid.jqGrid({ 
     url: wsBaseUrl + 'GetOrderList', 
     colNames: ['OrderID', 'Order Date', 'Qty', 'Unit', 'Line total'], 
     colModel: [ 
      //omitted for brevity 
     ], 
     jsonReader: { 
      id: "OrderID" 
     }, 
     serializeGridData: function (postData) { 
      if (postData.filters === undefined) postData.filters = null; 
      if (postData.customerID === undefined) postData.customerID = customerID; 
      return JSON.stringify(postData); 
     }, 
     pager: $('#pcgrid_pager'), 
     sortname: 'OrderID', 
     sortorder: "asc", 
     height: '280', 
     rownumbers: true, 
     gridview: true 
    }); 
} 

あなたは私が再作成しています見ることができるように、それぞれの時間は、クリックは、グリッドオブジェクトをやって、それを結合すると、その意志のparamsのリストにパラメータcustomerIDですされていますserializeGridData関数イベントのグリッドによってサーバーに送信されます。

残念ながら、これは動作せず、最初のパラメータは変更されません。

多分私はそれをとにかく正しくやっていません。私のサンプルのように後続のリクエストでグリッドを再初期化するか、またはパラメータをグリッドに渡してシリアル化する方法はありますか?私は、ダイアログが隠された、あなたはそれを閉じた後に破壊されないであろうと仮定し

答えて

3

を支援するための

感謝。したがって、pc_grid = $('#pcgrid')の割り当ての前に$("#pcgrid").jqGrid('GridUnload')のコールを含めることができます。

+0

いつも...ありがとう! – Lorenzo

+0

@Lorenzo:いつものように:あなたは大歓迎です! – Oleg

+0

他人を助けることがあります。これは4.8.2では機能しません。しかし、これはhttps://stackoverflow.com/questions/32316701/uncaught-exception-jqgrid-no-such-method-gridunload –