0

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

好的,让我们开始讨论真正的问题。我正在使用内联编辑,并且我对按钮进行了一些自定义。我想使用“ENTER”和“ESC”键作为快捷键。这工作正常。我在本地网格中操作数据,只有当用户按下专用按钮时,我才会将数据保存在文件中。该文件也用于填充网格。因此,如果用户现在正在编辑网格中尚未包含在我的文件中的任何行,并且他正在通过按 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');
                }
            }
        );

谢谢指教。问候。

4

1 回答 1

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); 在你的逃生事件中使用

于 2013-12-20T10:36:13.903 回答