0

1 ページに 2 つの jqgrids を追加する必要があります。1 つはレコードの表示に使用され、もう 1 つは一括挿入に使用されます。別のグリッドを追加するために、同じファイル内で別のメソッド シグネチャを使用して別の初期化グリッド メソッドを定義しました。発生している問題は、[行の追加] をクリックすると、1 行ではなく 2 行が追加されることです。関数は 2 回実行され、新しい空白行を追加します。私は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

「私は 1 つのグリッドを持っていました。別のグリッドを追加するために、同じファイルに別の init グリッド メソッドを異なるメソッド シグネチャで定義しました。発生している問題は、[行の追加] をクリックすると、1 行ではなく 2 行が追加されることです。 "
私の知る限り、Javascript では同じ名前のメソッドを 1 つしか作成できません。(署名は異なりますが)同じ名前のメソッドを 2 つ作成する ことはできません。

javascript コンパイラ エンジン (ブラウザ エンジン) は名前のみで実行されるためです。

この場合の最適な JavaScript 関数の例は次のとおりjqGrid()です。

理解する別の方法は、次の両方の機能が同じであることです。

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

これらの方法は同じです。同様に関数を呼び出すと、loadMsg()このメソッドも実行されます。
私があなたの質問を理解していない場合はお知らせください...

于 2012-06-14T10:09:34.153 に答える