簡體   English   中英

如何禁用saveRow事件ui-grid

[英]How to disable saveRow event ui-grid

我正在使用ui-grid在UI中顯示我的表。 我有一個要求,我不希望表自動保存數據。 我希望用戶編輯表格中的所有數據,然后單擊按鈕更新所有編輯的數據。

上面的行為工作正常,但只有我得到的問題是每當用戶在一行中編輯一個單元格,幾秒鍾后,該單元格變為灰色且無法編輯。 在瀏覽器cnsole上我收到此錯誤:

引發saveRow事件時沒有返回promise,無論是沒有人正在偵聽事件,還是事件處理程序沒有返回promise

由於上面的JS錯誤,整行變得不可編輯。 除非我點擊我的按鈕,否則如何告訴ui-grid不保存數據。

如果我處理saveRow事件,那么我的按鈕不起作用。 請幫助我這方面。

以下是相關代碼的片段:

    var grid = {
                    data : 'hwData['+key+']',
                    paginationPageSizes: [25, 50, 75],
                    paginationPageSize: 25,
                    enableGridMenu: true,
                    enableFiltering: true,
                    enableSelectAll: true,
                    enableColumnResize : true,
                    exporterCsvFilename: 'myFile.csv',
                    exporterMenuPdf: false,
                    exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")),

                    onRegisterApi: function(gridApi){
                          $scope.gridApi.push(gridApi);
                          gridApi.edit.on.afterCellEdit($scope,function(rowEntity, colDef, newValue, oldValue){
                              if(oldValue  == newValue){
                                    return false;
                              }


                                $("#test").prepend('<font color= "red"> ' +colDef.name+ 'Edited  ');


                           })
                          },

..............some more code
..............
$.ajax({
                                        type:'POST',
                                        url:'/HardwareInventory/ajax/storage/edit_owned_storage',
                                        data: jsonHostNames,
                                        dataType:"json",
                                        contentType: "application/json; charset=utf-8",
                                        success : function(result){
                                            if(result.status == "Success"){

                                                location.reload(true);
                                            }else{
                                                bootbox.alert("Either hostname is not correct or you don't have permission to edit this team's data");


                                            }
                                        },
                                        statusCode: {
                                            500: function(){
                                                alert("Oops!, there has been an internal error");
                                            }
                                        },
                                        complete: function(result){
                                        }
                                    });
                                }
                            });

在網格選項中設置“rowEditWaitInterval:-1” ,默認情況下它永遠不會調用saveRow方法,因此您可以在自定義方法中保存修改后的數據。 你可以訪問這樣的污垢

var dirtyRows = $scope.gridApi.rowEdit.getDirtyRows($scope.gridApi.grid);

@Jha:看看下面的url,我剛剛添加了假保存方法,除非你在其中定義你的保存功能,否則不會保存任何數據。 http://plnkr.co/edit/T0TLGLpLsk25vY6SUnzR?p=preview

//保存每一行數據

gridApi.rowEdit.on.saveRow($scope, $scope.saveRow);
$scope.saveRow = function (rowEntity) {
        var promise = $q.defer();
        $scope.gridApi.rowEdit.setSavePromise(rowEntity, promise.promise);
        promise.resolve();
    };

上面的代碼將解決您的錯誤“在引發saveRow事件時沒有返回承諾,沒有人正在偵聽事件,或者事件處理程序沒有返回承諾”。 不要忘記在控制器功能中添加“$ q”。 我希望你的保存功能也能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM