2015-12-07 9 views
6

UIでテーブルを表示するためにui-gridを使用しています。テーブルを自動保存する必要がないという要件があります。私は、ユーザーがテーブル内のすべてのデータを編集してボタンをクリックして、編集したすべてのデータを更新してほしい。saveRowイベントを無効にする方法ui-grid

上記のbehavioudはうまくいきますが、私が得意なのは、ユーザーが数秒後に行のセルを編集するたびに、そのセルがグレーで編集不能になることです。ブラウザ上で、私はこのエラーを取得していますcnsole:

約束がsaveRowイベントが発生したときに返されませんでした、どちらか誰もイベントを聞いていない、またはイベントハンドラされるため、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){ 
             } 
            }); 
           } 
          }); 

答えて

5

"rowEditWaitInterval:-1"グリッドオプションではデフォルトでsaverowメソッドが呼び出されることはないので、変更したデータをカスタムメソッドに保存することができます。 そして、このような汚れにアクセスすることができます

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

2

@Jha:私はちょうどあなたがあなたの保存機能を定義するまで、すべてのデータが保存されません方法、保存偽物追加したURL以下の表情を持っていますその中。 http://plnkr.co/edit/T0TLGLpLsk25vY6SUnzR?p=preview

//約束がsaveRowイベントが発生したときに返されませんでした、どちらか誰もイベントを聞いていない、またはイベントハンドラがありませんでした」上記のコードは、あなたのエラーを解決します各行のデータに

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

を保存約束を返す "。コントローラ関数に "$ q"を追加することを忘れないでください。あなたの保存機能もうまく動作することを願っています。

関連する問題