2017-04-19 4 views
0

Ag-Grid를 사용하여 서버에서 1 행의 데이터를 반환합니다. 데이터가 서버에서 반환되고 그리드에 설정되어 있지만 데이터가 표시되지 않습니다.angularjs ag-grid가 행 데이터를 표시하지 않습니다.

angular.module('vAnalyzeApp.services') 
.factory('JobResult', function($resource, configSettings) { 
var jobresult = $resource(configSettings.apiServiceUrl + 'api/v1/jobresult', {}, { 
    'paged': { 
    method: 'GET', 
    isArray: false, 
    transformResponse: function(data, headers) { 
     var count = headers('Count'); 
     return { 
     count: angular.fromJson(count), 
     results: angular.fromJson(data) 
     }; 
    } 
    } 
}); 
return jobresult; 
}); 

내가 디버그 :

$scope.refreshLastResultGrid = function() { 
jobResult.paged().$promise.then(function (results) { 
    $scope.jobResult = results; 
    $scope.lastResultGridOptions.rowData = $scope.jobResult; 

    if ($scope.lastResultGridOptions.api) { 
     $scope.lastResultGridOptions.api.setRowData(); 
     $scope.lastResultGridOptions.api.sizeColumnsToFit(); 
    } 
}, function (error) { 
$scope.messageModalVariables = { 
messageTitle: 'Error Refreshing Job Result', 
messageDisplay: 'API Error. Could not retrieve job results.', 
messageType: 'Error', 
okIsHidden: false, 
yesNoIsHidden: true 
}; 
$scope.openMessageModal($scope.messageModalVariables); 
     }); 
    }; 

$scope.refreshLastResultGrid(); 

이 행을 반환하는 서버에 서비스 호출입니다 :이 함수는 초기화시 호출

$scope.lastResultGridOptions = { 
    rowData: $scope.jobResult, 
    suppressCellSelection: true, 
    suppressSorting: true, 
    enableFilter: true, 
    enableColResize: true, 
    angularCompileRows: true, 
    angularCompileHeaders: true, 
    suppressMenuHide: true, 
    columnDefs: [{ 
     field: 'StartDate', 
     filter: 'text', 
     headerName: 'Start Date', 
     cellClass: 'wrap-text', 
     minWidth: 10 
    }, { 
     field: 'EndDate', 
     filter: 'text', 
     headerName: 'End Date', 
     cellClass: 'wrap-text', 
     minWidth: 40 
    }, { 
     field: 'IsSuccess', 
     filter: 'text', 
     headerName: 'Result Status', 
     cellClass: 'wrap-text', 
     minWidth: 40 
    }, { 
     field: 'DateCompleted', 
     filter: 'text', 
     headerName: 'Date Completed', 
     cellClass: 'wrap-text', 
     minWidth: 40 
    }] 
}; 

: 이 내 그리드입니다 refreshLastResultGrid 기능과 results이 서버에서 돌아와 $scope.lastResultGridOptions.rowData으로 설정됩니다. setRowData() 함수가 오류없이 완료되었지만 데이터가 표에 표시되지 않습니다. 다음은 그리드의 스크린 샷입니다 : enter image description here

왜 그리드에 데이터가 표시되지 않습니까?

UPDATE 결과 개체는 :

public class JobParameterDto 
{ 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 
    public string SourceDB { get; set; } 
    public string TargetDB { get; set; } 
    public Nullable<DateTime> DateCompleted { get; set; } 
    public Nullable<bool> IsSuccess { get; set; } 
} 

I이 올바른 데이터가 반환되는 결과 개체 볼

:

  • STARTDATE : 01/01/2016T00 : 00 : 00
  • 종료 날짜 : '11/01/2016T00 : 00 : 00 '
  • TargetDB'MainDB '
  • ,
  • SourceDB : 'WrhDB'
  • IsSuccess : 널 (null)
  • DateCompleted : 널 (null)
+0

약 $ scope.jobResult = results.data; –

+0

results.data는 위에 표시된 JobParameterDto 객체입니다. –

답변

0

당신은 그리드 행을 설정 api.setRowData를 사용해야합니다. results.dataArray - 이 Array 일 것으로 예상하십시오.

... 
jobResult.paged().$promise.then(function (results) { 
    $scope.jobResult = results instanceof Array?results:[results]; 
    if ($scope.lastResultGridOptions.api) { 
     $scope.lastResultGridOptions.api.setRowData($scope.jobResult); 
     $scope.lastResultGridOptions.api.refreshView(); 
     $scope.lastResultGridOptions.api.sizeColumnsToFit(); 
    } 
}, function (error){ 
... 
+0

동일한 결과 ... 데이터 없음 –

+0

샘플 결과 개체를 공유 할 수 있습니까? –

+0

위의 오브젝트 데이터를 추가했습니다. 'null '인 2 개의 필드가 있습니다. 다른 필드에는 텍스트가 있습니다. –