jqgrid在一个页面上使用2个网格的问题

时间:2012-04-24 06:09:11

标签: javascript jquery jqgrid

我必须在一个页面上添加两个jqgrids。 一个将用于显示记录,另一个将用于批量插入。 我有一个网格,为了添加另一个网格我刚刚在同一个文件中使用不同的方法签名定义了另一个init网格方法。 发生的问题是当我单击Add row时,会添加两行而不是一行。该函数执行两次,负责添加一个新的空行。我对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);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

这些方法是相同的。如果我们调用像loadMsg()这样的函数,这个方法也会执行 如果我错过了解你的问题,请告诉我......