jQuery jqGrid内联编辑 - 取消行编辑删除行?

时间:2013-11-08 11:23:38

标签: javascript jquery jqgrid

我实际上遇到了我的jqGrid问题,我在网上找不到任何类似的问题。也许我没有拿它的写标签,对不起。

好吧让我们开始谈论真正的问题。我正在使用内联编辑,我稍微定制了按钮。我想用“ENTER”和“ESC”-Keys作为快捷方式。这很好用。我在本地网格中操作数据,只有当用户按下专用按钮时,我才会将数据保存在文件中。此文件也用于填充网格。因此,如果用户现在正在编辑网格中尚未在我的文件中的任何行,并且他通过按ESC取消编辑,则整行数据将被删除。

任何可以帮助我的人?我的网格:

        // Table
        jQuery("#tbl").tableDnD({scrollAmount:0});       
        jQuery("#tbl").jqGrid({
            url:'../path/to/my/script.pl', 
            datatype: "json", 
            postData:{'art':'empfang'},
            jsonReader: {
                repeatitems: false
            },
            colNames:['1','2','3','4','5'], 
            colModel:
            [ 
                {name:'1',index:'1', width:200, align:"left", sortable:true,editable:true, edittype:"text"},
                {name:'2',index:'2', width:200, align:"left", sortable:true,editable:true, edittype:"select",editoptions:{value:b}}, 
                {name:'3',index:'3', width:200, align:"left", sortable:true,editable:true, edittype:"text"}, 
                {name:'4',index:'4', width:220, align:"left", sortable:true,editable:true, edittype:"select",editoptions:{value:""}}, 
                {name:'5',index:'5', width:200, align:"left",sortable:true,editable:true, edittype:"select",editoptions:{value:""}}
            ],  
            rowNum:2000, 
            rowTotal: 2000,
            loadtext: 'Reading data...',
            height: '100%',
            width: '100%',
            hidegrid: false,
            sortable: true,
            toppager: true,
            gridview: true, 
            viewrecords: true,
            rownumbers: true, 
            loadonce: true,
            editurl: 'dummy.php',
            pager: '#tbl_toppager',
            loadComplete: function(data){
                $("#tbl").setColProp('4', { editoptions: { value: data.userdata.4} });
                $("#tbl").setColProp('5', { editoptions: { value: data.userdata.directory_listing} });
            },
            gridComplete: function() { 
                $("#_empty","#tbl").addClass("nodrag nodrop"); 
                jQuery("#tbl").tableDnDUpdate(); 
            },
            caption: "Testgrid",
            ondblClickRow: function(id){
                jQuery('#tbl').editRow(id, true); 
            }
        });     

        jQuery("#tbl").jqGrid('filterToolbar');
        jQuery("#tbl").jqGrid(
            'navGrid',
            '#tbl_toppager',
            {
                del: true,
                add: false,
                edit: false,
                refresh: false,
                search: true
            },
            {
            }, // edit options 
            {
            }, // add options 
            {
                reloadAfterSubmit: false,
                jqModal: true,
                closeOnEscape: true
            }, // del options 
            {
                jqModal: true,
                closeOnEscape: true
            } // search options 
        );
        jQuery("#tbl").jqGrid(
            'inlineNav',
            '#tbl_toppager', 
            {
                editParams: { keys: true },
                addParams: { addRowParams: { keys: true } }
            }
        ); // Inline Editing

        jQuery("#tbl_toppager_right").hide();
        jQuery("#tbl_toppager_center").hide();
        jQuery("#tbl").navSeparatorAdd(
            "#tbl_toppager_left",
            {
                sepclass : "ui-separator",
                sepcontent:""
            }
        ).jqGrid(
            'navButtonAdd',
            '#tbl_toppager_left',
            {
                caption: "",
                buttonicon: "ui-icon-document",
                title: "Save data in file",
                position: "last",
                onClickButton: function () {
                    $("#write_file").dialog('open');
                }
            }
        );

感谢您的建议。问候。

1 个答案:

答案 0 :(得分:0)

在JQGrid的官方演示中,他们提供的示例几乎与您的要求相同

...
onSelectRow: function(id){
                 if(id && id!==lastsel){
                     jQuery('#rowed3').jqGrid('restoreRow',lastsel);   
                     jQuery('#rowed3').jqGrid('editRow',id,true);
                     lastsel=id;
                 }
             }
...

其中lastsel是全局变量

所以你可以使用jQuery('#rowed3').jqGrid('restoreRow',idOfLineToRestore); 在你的逃生事件

相关问题