2012-04-24 56 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()这样的函数,这个方法也会执行。
请让我知道,如果我错过了解你的问题...

相关问题