2012-02-19 12 views
0

jqgridをページに追加しました。 Jqgridでは、ユーザーが列をクリックしたときに必要な列を配置し、目的の列をクリックすると、他のJqgrid.Nowを入力します。初回のみJQGridを埋めますが、次回はサーバー側のコードが実行されません。jqGridでサーバーサイド関数が1回だけ呼び出されます。

var firstButtonColumnIndex = 0; 
      grid = $('#list'); buttonNames = {}; 
      grid.jqGrid({ 
       url: 'jQGridHandler.ashx?Request=1', 
       loadonce: true, 
       direction: "rtl", 
       pgtext: "صفحه {0} از {1}", 
       datatype: 'json', 
       height: 250, 
       colNames: ['شماره درخواست', 'شماره اموال', 'شرح دستور کار', 'تاریخ دستور کار', 'زمان دستور کار', 'ملاحظات', '', ''], 
       colModel: [ 

         { name: 'WorkOrderNo', width: 100, sortable: true }, 
         { name: 'AssetNo', width: 100, sortable: true }, 
         { name: 'WorkDescription', width: 400, sortable: true }, 
         { name: 'WorkOrderDate', width: 80, sortable: true }, 
         { name: 'WorkOrderTime', width: 80, sortable: true }, 
         { name: 'Remark', width: 100, sortable: true }, 
         { name: 'del', width: 20, sortable: false, search: false, 
          formatter: function() { 
           return "<span class='ui-icon ui-icon-trash'></span>"; 
          } 
         }, 
         { name: 'details', width: 20, sortable: false, search: false, 
          formatter: function() { 
           return "<span class='ui-icon ui-icon-document'></span>"; 
          } 
         } 

        ], 
       gridview: true, 
       rowNum: 10, 
       rowList: [10, 20, 30], 
       pager: '#pager', 
       // sortname: 'WorkOrderNo', 
       viewrecords: true, 
       sortorder: 'asc', 
       caption: 'درخواست ها...........', 
       rownumbers: true, 
       beforeSelectRow: function (rowid, e) { 
        var iCol = $.jgrid.getCellIndex(e.target); 
        if (iCol == 7) { 
         //alert("rowid=" + rowid + "\nButton name: " + buttonNames[iCol]); 
         // $('img').each(function() { 
         $("#workRequestPopUp").draggable(); 
         // }); 

        } else if (iCol == 8) { 
         workOrderId = rowid; 

         $("#tblRequestWorks tr").remove(); 
         $("#tblRequestWorks").jqGrid({ 
          // url: 'jQGridHandler.ashx?RequestWorksFill=1&workOrderId=' + workOrderId, 
          url: "PublicHandler.ashx?Request=1&workOrderId: rowid", 
          direction: "rtl", 
          pgtext: "", 
          datatype: 'json', 
          height: 250, 
          colNames: ['نام کار', 'نام واحد', 'سرپرست واحد', 'تعداد', 'پایان کار', ''], 
          colModel: [ 

         { name: 'WorkName', width: 300, sortable: true }, 
         { name: 'SectionName', width: 100, sortable: true }, 
         { name: 'SectionSupervisor', width: 100, sortable: true }, 
         { name: 'RequestCount', width: 80, sortable: true }, 
         { name: 'FinishWork', width: 100, sortable: true }, 
         { name: 'details', width: 20, sortable: false, search: false, 
          formatter: function() { 
           return "<span class='ui-icon ui-icon-document'></span>"; 
          } 
         } 

        ], 

          rowNum: 10, 
          rowList: [10, 20, 30], 

          sortorder: 'asc', 
          caption: 'Test', 
          rownumbers: true, 
          beforeSelectRow: function (rowid, e) { 
           var iCol = $.jgrid.getCellIndex(e.target); 
           if (iCol == 6) { 
            alert(rowid); 
            Fill12(rowid); 
           } else if (iCol == 8) { 
            alert(rowid); 
            Fill12(rowid); 

            return true; 

            // return (iCol >= firstButtonColumnIndex) ? false : true; 

           } 
          }, 
          dataType: "json" 

         }); 
         // fillRequestWorkPopup(workOrderId); 

         popup(e); 
        } 
        // prevent row selection if one click on the button 
        // return (iCol >= firstButtonColumnIndex) ? false : true; 
        return true; 
       } 


      }); 

それはJQGridでTRに委任機能で、次のように コードが書かれていますか? 私は教授を尊敬しています。ありがとうすべて

答えて

1

URL "PublicHandler.ashx?Request=1&workOrderId: rowid"私は間違っているようです。おそらく"PublicHandler.ashx?Request=1&workOrderId=" + rowidを意味しますか? postData: {Request: 1, workOrderId: rowid}url: "PublicHandler.ashx"を使用する方が良いでしょう。

次の問題は、$("#tblRequestWorks tr").remove();の使用です。このページで使用するHTMLコードは一切含まれていません。古いグリッドを破棄して同じ場所に新しいグリッドを作成する場合は、$("#tblRequestWorks tr").remove();$("#tblRequestWorks").jqGrid('GridUnload');の代わりにGridUnloadを使用する必要があります(hereおよび例を参照)。

dataType: "json"をコードから削除することもできます。 jqGridはオプションを知らず、既に正しいdatatype: "json"オプションを使用しています。

コードを変更してGridUnloadの使用法が不要になると思います。第2グリッド($("#tblRequestWorks"))の一部のパラメータを変更し、$("#tblRequestWorks").trigger('reloadGrid', [{page: 1}]);に関してリロードするだけで十分です。

もう1つの注意点:2番目のグリッドの値はidに非常に注意してください。ページ上にIDの重複を持つことは許されません。サーバー上で一意のIDを生成できない場合は、グリッドのオプションidPrefixを使用することを検討できます。

+0

@オレグ:ありがとう、もう1つの例を説明できますか? – Pouya

+0

@mohsen:どういう意味ですか? jqGridを一度作成すると、 '

'要素を超える他のダイビングが作成されます。既存のグリッドを削除するには、 '
'の中のすべての ''要素を削除するだけでは不十分です。 'GridUnload'メソッドはすべての作業を行います。同じ場所に別のグリッドを作成することができます。 – Oleg

関連する問題