添加新行

时间:2017-09-26 16:22:49

标签: javascript jquery jqgrid free-jqgrid

我目前正在使用free-jqGrid版本4.14.1(使用cdn超链接)。我想让用户添加一个带有输入值的新行,如果要通过单击该行进行任何更改,请编辑该行。为了添加新行,我创建了一个添加按钮(不使用jqGrid寻呼机)。

我现在面临两个不同的问题:

1)我提到this demo进行内联编辑。根据这个演示代码,我需要使用

grid.jqGrid('restoreRow', lastSelection);

但是,对于这一行,每次我添加新行时,前一行都会被删除,只显示新添加的行。请检查this fiddle

2)由于1),我评论了那条线(我不认为我应该这样做才能正常运作),并试图跑。添加新行后,之前添加的行仍然存在,但显示的所有行都显示在文本框中,如(fiddle)

enter image description here 我想要的只是在用户点击要修改的行之后,它才会更改为文本框,如guriddo演示。

我没有找到与此问题相关的任何帖子。有没有人请帮帮我?

============================================

添加:

我开始使用一些基表值来进行验证。基本数据行按我的意愿运行(单击要修改的行),但新行不是。当我点击时,似乎没有选择新行并且没有聚焦,并且在按下回车键后没有退出编辑模式..

enter image description here

============================================

============================================

以下是网格代码仅供参考:

$(document).ready(function () {

        Load_Bin();

        $('#Bin-QtyBin').focus();
        $('#btnEnter-Bin').click(function () {

                var valNumBin = $('#Bin-numBin').val();
                //if bins are dropbox: select enabled one

                var valQtyBin = $('#Bin-QtyBin').val();


                var paramRow = {
                    rowId: "new_row",
                    initdata: {
                        numBin: valNumBin,
                        QtyPutAway: valQtyBin
                    },
                    position: "first" //"last"
                }

                $("#tbBin").jqGrid('addRow', paramRow);
                $('#Bin-numBin').val('');
                $('#Bin-QtyBin').val('');

        });
});
    var lastSelection;

    function Load_Bin() {
        var tbBinArea = $('#tbBin');
        tbBinArea.jqGrid({
            datatype: "local",
            colModel: [
                { label: 'Bin', name: 'numBin', sorttype: 'text', searchoptions: { clearSearch: true }, width: 310, editable: true },
                { label: 'Put Away Qty.', name: 'QtyPutAway', sorttype: 'number', searchoptions: { clearSearch: true }, width: 310, editable: true }],
            rowNum: 10,
            rowList: [10, 15, 30, "10000:All"],
            prmNames: {
                page: 'defaultPageNumber',
                rows: 'rowsPerPage'
            },
            //forceClientSorting: true,
            rownumbers: true,
            //autowidth: true,
            viewrecords: true,
            loadonce: true,
            multiselect: false,
            multiPageSelection: false,
            iconSet: "fontAwesome",
            pager: true,
            height: 250,
            onSelectRow: editRow, 
            searching: {
                searchOperators: true,
                defaultSearch: 'cn',
                closeOnEscape: true,
                searchOnEnter: false,
                multipleSearch: true
            }
        });

    }


    function editRow(id) {

        if (id && id !== lastSelection) {
            var grid = $("#tbBin");
            grid.jqGrid('restoreRow', lastSelection);
            grid.jqGrid('editRow', id, { keys: true });
            lastSelection = id;
        }
    };

(ps感谢this fiddle的所有者,因为我正在努力将代码移动,并且因为我丢失了原来的答案链接而没有解决他/她的抱歉......)

1 个答案:

答案 0 :(得分:0)

我最后只是在添加新行后重新加载整个网格。它工作正常,除了新添加的行没有转向编辑模式,因为它没有检测用户是否点击它,因为它在创建时已经突出显示..

创建新行后,只需添加以下代码:

            var reloaddata = $('#tbBin').jqGrid("getGridParam", "data");

            $('#tbBin')
                .jqGrid('setGridParam',
                {
                    datatype: 'local',
                    data: reloaddata
                })
                .trigger("reloadGrid");