当我输入保存时,防止在单元格编辑时进行两次保存调用[关闭]

Posted

技术标签:

【中文标题】当我输入保存时,防止在单元格编辑时进行两次保存调用[关闭]【英文标题】:Prevent two save calls on cell edit when I enter for save [closed] 【发布时间】:2021-03-13 05:25:31 【问题描述】:

两次调用 jqgrid 中的保存单元格 url(一次是在输入的情况下,这是 jqgrid 的默认行为)另一种是在 focusout 时自定义保存。

当我输入保存时,我需要防止两次保存单元格编辑调用。

column.editoptions.dataEvents = [
  type: 'keyup focusout',
  fn: function(e) 
    var isValidate = ValidateGridEmail($(this).val());
    EmailValidationMessage(isValidate);
    if (e.type == "focusout" && isValidate && globalVar.irow != null && globalVar.icol != null) 
      $("#GridEditConfiguration").saveCell(globalVar.irow, globalVar.icol);

      globalVar.irow = null;
      globalVar.icol = null;
    
  
]

【问题讨论】:

【参考方案1】:

你可以使用一些事件来做到这一点,但我不确定 free-jqGrtid 有这些。这是不支持的版本。

在受支持的Guriddo jqGrid 中,您可以使用 beforeSaveCell 发出开始保存的信号,然后在您的情况下使用它。将 afterSubmitCell 中的信号设置回 false。

像这样:

var savestart = false;   
$("#jqGrid").jqGrid(
    beforeSubmitCell : function( id, name, val, irow,icol) 
        savestart = true;
    ,
    afterSubmitCell : function() 
        savestart = false; 
        return [true,""];
    ,
    ....
 );

在你的代码中添加这个

if (e.type == "focusout" && isValidate && globalVar.irow != null && globalVar.icol != null && !savestart) 
  $("#GridEditConfiguration").saveCell(globalVar.irow, globalVar.icol);
  ...

你应该再次检查这些事件是否在 free-jqGrid 中可用

【讨论】:

以上是关于当我输入保存时,防止在单元格编辑时进行两次保存调用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何保存单元格的状态,以便当我滚动或离开页面时它不会刷新单元格?

使用 VBA 选择特定单元格时如何保存工作簿?

Ag-grid : 单元格编辑器 Aginit 被调用两次

推送标题部分项目后如何防止单元格编辑?

防止在外部单击时以弹出模式关闭单元格编辑器

编辑完成时自动将单元格中的更改保存到对象?