0

我必须在一页上添加两个 jqgrids。一个用于显示记录,另一个用于批量插入。我有一个网格,为了添加另一个网格,我刚刚在同一个文件中定义了另一个具有不同方法签名的初始化网格方法。发生的问题是当我单击添加行时,添加了两行而不是一行。该函数执行两次,负责添加一个新的空白行。我对 jquery 很陌生。任何帮助,将不胜感激。

    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);
        }
    }
}
4

1 回答 1

0

“我有一个网格,为了添加另一个网格,我刚刚在同一个文件中定义了另一个具有不同方法签名的初始化网格方法。发生的问题是当我单击添加行时,添加了两行而不是一行。 "
据我所知,在 Javascript 中,您只能创建一个具有相同名称的方法。(即使签名不同,)您不能创建两个具有相同名称的方法。

因为 javascript 编译器引擎(浏览器引擎)将仅使用名称执行。

在这种情况下,最好的 javascript 函数示例是:jqGrid().

另一种理解方式是,以下两个功能相同:

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

这些to方法是一样的。如果我们像这样调用函数,loadMsg()这个方法也会执行。
如果我想念你的问题,请告诉我......

于 2012-06-14T10:09:34.153 回答