代码之家  ›  专栏  ›  技术社区  ›  lazerbrain

如何取消角度ui网格中的单元格编辑?

  •  0
  • lazerbrain  · 技术社区  · 8 年前

    我在beginCellEdit事件中有一些情况

           gridApi.edit.on.beginCellEdit($scope, function(rowEntity, colDef, event) {
                var scope = angular.element(event.currentTarget).scope();
                var selectedRowIndex = scope.rowRenderIndex;
                var selectedColumnName = scope.col.name;
    
                if ($scope.gridOptions.data[selectedRowIndex-1][selectedColumnName].trim()=='') {      
                    alert("You cannot enter the value in this cell");
                    // At this place I want to cancel edit and return focus to grid
                } 
            })
    

    是否有任何preventDefault或类似方法可以轻松取消单元格编辑并将焦点返回网格。

    非常感谢。

    2 回复  |  直到 8 年前
        1
  •  2
  •   CAK2    8 年前

    另一种方法是广播IUiGridEditContants。事件。END\u CELL\u编辑事件,如下所示:

    scope.$broadcast("uiGridEventEndCellEdit");
    

    唯一的缺点是它将关闭所有处于编辑模式的单元格。

    仅供参考:以下内容对我无效:

     gridApi.rowEdit.setRowsClean([gridRow.entity]);
    
        2
  •  1
  •   Immanuel Kirubaharan    8 年前

    你可以看看这个 plunker 具有条件可编辑字段的示例。

    控制器:

    var cellEditable = function($scope){
      if($scope.row.entity.oldId4===undefined)
        return false;
      return $scope.row.entity.oldId4!=$scope.row.entity.id4;
    }
    

    网格选项->列定义:

    cellEditableCondition : cellEditable
    
    推荐文章