3

私はjqGridを使用してinlineNavいるので、ユーザーは行をローカルで編集/追加/削除し、終了時にすべての変更をサーバーに送信できます。複数の新しい行をローカルでグリッドに追加できるようにしたいのですが、他の要件により、新しく追加された行には、デフォルトではなく一意のIDが必要ですnew_row。また、外部キーの制約のため、ajax呼び出しを使用して追加直後に新しい行を永続化することはできません。次のことを試みましたが、ID値は変更されません。

<input type="hidden" id="newRowIndex" />

$("#thisGrid").jqGrid('inlineNav', '#thisGridPager', {
    edit: false,
    addtext: "Add",
    save: false,
    cancel: false,
    addParams: {
        position: 'last',
        addRowParams: {
            keys: true,
            oneditfunc: function (rowid) {
                var newRowIndex = $("#newRowIndex").val();
                if (!newRowIndex)
                    newRowIndex = 1;
                $("#thisGrid").jqGrid('setCell', rowid, 'id', rowid + "_" + newRowIndex, '', '');
                newRowIndex++;
                $("#newRowIndex").val(newRowIndex);
            }
        }
    }
});

new_row_1新しく追加された行のIDをに設定し、新しく追加された各行のインデックスをインクリメントしたいと思います。これは可能ですか?もしそうなら、どのように?

解決

ディーンの答えに加えて、私はそれがのでそれを行うと機能しないことを発見しましoneditfuncaddRowParams。jqGridのafterInsertRowイベントを使用すると機能することがわかりました。

afterInsertRow: function (rowid, rowdata, rowelem) {
    if (rowid == 'new_row') {
        var newRowIndex = $("#newRowIndex").val();
        if(!newRowIndex)
            newRowIndex = 1;
        var newRowId = rowid + "_" + newRowIndex;
        $("#new_row").attr('id', newRowId);
        newRowIndex++;
        $("#newRowIndex").val(newRowIndex);
    }
}
4

1 に答える 1

3

新しい行のIDを設定するには、次を使用します。

 $("#new_row").attr('id',newId);

この質問を参照してください: リロードせずにJQGridの行のプライマリIDを変更できますか?

于 2012-05-31T18:15:05.873 に答える