【问题标题】:angularjs ag-grid does not show row dataangularjs ag-grid 不显示行数据
【发布时间】:2017-09-16 04:38:51
【问题描述】:

我正在使用 ag-grid 从服务器返回 1 行数据。数据从服务器返回,并在网格中设置,但数据未显示。 这是我的网格:

$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
    }]
};

这个函数在初始化过程中被调用:

$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();

这是对返回行的服务器的服务调用:

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;
}); 

我在refreshLastResultGrid 函数中调试,results 从服务器返回并设置为$scope.lastResultGridOptions.rowDatasetRowData() 函数完成没有错误,但数据未显示在网格上。 这是网格的屏幕截图:

为什么数据不显示在网格中?

更新 结果对象是:

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; }
}

当我查看结果对象时,这是返回的正确数据:

  • 开始日期:'01/01/2016T00:00:00'
  • 结束日期:'11/01/2016T00:00:00'
  • 目标数据库:'MainDB'
  • SourceDB:'WrhDB'
  • IsSuccess: null
  • 完成日期:空

【问题讨论】:

  • 那么 $scope.jobResult = results.data;
  • results.data 是上面显示的 JobParameterDto 对象。

标签: angularjs ag-grid


【解决方案1】:

您应该使用api.setRowData 来设置网格行。确保 results.dataArray - ag-grid 期望 rowDataArray

...
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){
...

【讨论】:

  • 同样的结果...没有数据
  • 你可以分享示例结果对象吗?
  • 我在上面添加了对象数据。有 2 个字段是 null。其他字段有文本。
  • 它是一个数组吗?你能分享一下整个结果对象结构吗?
  • 它不是一个数组而是 1 个对象。结果对象是上面列出的 JobParameterDto。
猜你喜欢
  • 2020-07-12
  • 2016-08-02
  • 1970-01-01
  • 2021-09-29
  • 2019-07-03
  • 2017-06-28
  • 2019-08-27
  • 2021-10-20
  • 2018-10-16
相关资源
最近更新 更多