【问题标题】:Execute cancel add, edit and delete event manually in jqGrid在jqGrid中手动执行取消添加、编辑和删除事件
【发布时间】:2020-11-27 17:16:46
【问题描述】:

我使用 jqGrid 4.5.4

当我单击 jqGrid“inlinenav”中的添加按钮时,它会在网格中创建一行。

但如果我不小心点击了另一个网格行,“添加的行”就会消失,“inlinenav”编辑和删除按钮也会停止工作。

要让按钮重新开始工作,我需要再次单击添加按钮并取消包含。

有没有办法让我在“onSelectRow”方法中手动执行取消添加、编辑和删除事件?

在我的代码下面:

jQuery("#" + p_gridName).jqGrid("GridUnload");        
jQuery("#" + p_gridName).jqGrid({
    data : p_dados, 
    datatype : "local", 
    sortable : true, 
    colNames : p_header, 
    colModel : p_descriptor,
    rowNum : 20, 
    rowList : [20, 50, 100], 
    pager : '#p' + p_gridName, 
    recordpos : 'right', 
    viewrecords : true,
    multisort : true,
    sortorder : "desc", 
    width: screen.availWidth - (screen.availWidth * 3 / 100),
    height : screen.availHeight - 300, 
    ignoreCase : true, 
    multiselect : false, 
    shrinkToFit : false,
    caption: "-",
    onSelectRow : function(ids) {        
        var aux = jQuery("#" + p_gridName).jqGrid('getRowData', ids);
        valorChave = aux[p_primaryKey];            
        var $this = $(this);
        $this.jqGrid('setGridParam', {
            editurl : (ids === "new_row" ? 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName :  'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName + '&chaveRegistro=' + valorChave)
        });
    },
    editurl : 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName
});
jQuery("#" + p_gridName).navGrid('#p' + p_gridName, {
    edit : false, 
    add : false, 
    del : function(valorChave){ return true }, 
    refresh : false, 
    search : false
    },{},{}, {            
    onclickSubmit : function (rp_ge, postdata) {
        var keyValue = $(this).jqGrid("getCell", postdata, p_primaryKey);
        return {chaveRegistro : keyValue};
    },
    afterSubmit : function (response, postdata) {
        if (response != null && response.responseText != null) {
            if (response.responseText.includes("OK")) {
                alert(response.responseText);
                return [true, "", ""];
            }
            else {
                alert(response.responseText);
                return [false, "", ""];
            }
        }
    }
});
jQuery("#" + p_gridName).jqGrid('inlineNav', '#p' + p_gridName, {
    edit : true, editicon : "ui-icon-pencil", //icone para edição
    add : true, addicon : "ui-icon-plus", //icone para inclusão
    save : true, saveicon : "ui-icon-disk", //icone para salvar
    savetitle : "Salvar", //hint para salvar
    cancel : true, cancelicon : "ui-icon-cancel", //icone para cancelar
    canceltitle : "Cancelar", //hitn para cancelar
    editParams : {
        keys : false, 
        oneditfunc : null, 
        successfunc : function (response) {
            if (response != null && response.responseText != null) {
                if (response.responseText.includes("OK")) {
                    alert(response.responseText);
                    return true;
                }
                else {
                    alert(response.responseText);
                    return true;
                }
            }
        }
    },
    addParams : {
        useDefValues : true, addRowParams : {
            successfunc : function (response) {
                if(response.responseText.includes("OK")) {
                    alert(response.responseText);
                    return true;
                }
                else {
                    alert(response.responseText);
                    return true;
                }
            }
        }
    }
});

【问题讨论】:

  • 您能发布您的代码吗?

标签: jqgrid


【解决方案1】:

我不确定此选项在 jqGrid 4.5.4 中是否可用,但如果您将选项 restoreAfterSelect 设置为 false,则可以禁用此行为。此选项默认为 true:

jQuery("#" + p_gridName).jqGrid('inlineNav', '#p' + p_gridName, {
    ...
    restoreAfterSelect : false,
    ...
});

附注(编辑)刚刚选中 - 此选项在 4.5.4 中可用,您可以使用它

【讨论】:

  • 不幸的是,它在 4.5.4 版本中不可用。是否有免费的 jqGrid 较新版本在哪里实现?我可以使用表单编辑模块而不是行内编辑来解决这个问题吗?
  • 我检查了这个,该选项在 jqGrid 4.5.4 中可用。您确定您使用的是 4.5.4 版吗?当我在答案中写它时,将它设置在 inlineNav 方法中。
  • 谢谢托尼!我将属性插入错误的位置。问题解决了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多