2012-04-24 143 views
0

我必須在一個頁面上添加兩個jqgrid。 一個用於顯示記錄,另一個用於批量插入。 我有一個網格,爲了添加另一個網格,我剛剛在具有不同方法簽名的同一個文件中定義了另一個init網格方法。 發生的問題是當我點擊添加行時,添加了兩行而不是一行。該函數執行兩次,負責添加一個新的空白行。我對jquery很新。任何幫助,將不勝感激。jqgrid的問題 - 在一個頁面上使用2個網格

function InitGrid1() { 
    debugger 

// $grid1.find('.jqgrow td').live('click', function (e) { 
//  if (e.target && e.target.nodeName != 'TD') return; 
//  var $this = $(this); 
//  if ($this.find('input, a').length == 0) 
//   OnColumnClick($this); 
// }); 
    var lastSelectedRowID; 
    $grid1.jqGrid({ 
     colNames: ['AttendancePolicyID', 'AllowedVariationID', 'New', 'Updated', 'Policy Enabled', 'Effective Date', 'Employee ID', 'Employee Name', 'Activity Type', 'After Start', 'Before End', 'Allowed Variation', 'Status', '', '', 'Payroll_f', '', ''], 
     colModel: colModel, 
     sortname: 'EffectiveDate', 
     sortorder: "DESC", 
     rowNum: 5000, 
     rownumbers: true, 
     rownumWidth: 30, 
     autowidth: true, 
     gridview: true, 
     jsonReader: { 
      root: "rows", 
      page: "page", 
      total: "totalpages", 
      records: "totalrecords", 
      cell: "cell", 
      id: "ID", //index of the column with the PK in it 
      userdata: "userdata", 
      repeatitems: true 
     }, 
     prmNames: { 
      rows: "numRows", 
      page: "page", 
      sort: "sortField", 
      order: "sortOrder" 
     }, 
     postData: { 
      employeeIDs: [] 
     }, 
     datatype: function (postdata) { 
      idsToDelete = new Array(); 
      if (reloadType == GridReloadType.PastedFromExcel || reloadType == GridReloadType.ShowingResults) { 
       var griddata = { 
        totalpages: 1, 
        page: 1, 
        totalrecords: totalRowsToLoad, 
        rows: gridrows 
       }; fs 
       $grid1[0].addJSONData(griddata); 
      } 
      else if (reloadType == GridReloadType.LoadFromServer) { 
       LoadAttendancePolicyFromServerpanel(postdata); 
      } 
      else 
       LoadAttendancePolicyFromServerpanel(postdata); 
     }, 
     gridComplete: function() { 

            } 
    }); 

    var $html = $('#jqgh_attendancePolicyGrid_rn').html(); 
    $('#jqgh_attendancePolicyGrid_rn').html('No.' + $html); 
    $('.ui-jqgrid-titlebar-close').remove(); 

    DisableSaveButton(true); 
    ResizeGrid(); 
    $(window).resize(function() { 
     ResizeGrid(); 
    }); 

    function OnColumnClick($col) { 
     try { 
      var $row = $col.parent('tr:first'); 
      var rowid = $row.attr('id'); 
      if (rowid == null || $row == null) 
       return; 
      if ($row.find('input').length > 1) 
       return; 
      SaveRow(lastSelectedRowID); 

     } 
     catch (ex) { 
      ShowMessage(ex.message); 
     } 
    } 
} 

回答

0

「我有一個網格,以便添加另外一個我剛纔定義在不同的方法簽名相同的文件一個又一個的init網格方法。正在發生的問題是,當我點擊添加行,添加兩行而不是一行。「
據我所知,在JavaScript中,你只能創建一個同名的方法。 (即使簽名不同,)不能創建兩個具有相同名稱的方法。

因爲JavaScript編譯器引擎(瀏覽器引擎)只會以名字執行。

這種情況下的最佳javascript函數示例是:jqGrid()

另一種方式來理解的是,下面的兩個功能都相同:

function loadMsg(msg,count){ 
    alert(msg); 
    .... 
} 
function loadMsg(msg){ 
    alert(msg); 
    .... 
} 

這些的方法是一樣的。如果我們調用像loadMsg()這樣的函數,這個方法也會執行。
請讓我知道,如果我錯過了解你的問題...

相關問題