columnDefs
動的な変更に関して問題があります。gridOptions は次のとおりです。
$scope.gridOptions = {
columnDefs: [],
enableFilter: true,
rowData: null,
rowSelection: 'multiple',
rowDeselection: true
};
サーバーからデータを取得すると次のようになります。
$scope.customColumns = [];
$http.post('/Home/GetProducts', { tableName: 'TABLE_PRODUCT' }).success(function (data) {
angular.forEach(data.Columns, function (c) {
$scope.customColumns.push(
{
headerName: c.Name,
field: c.Value,
width: c.Width
}
);
});
$scope.gridOptions.columnDefs = $scope.customColumns;
$scope.gridOptions.rowData = data.Products;
$scope.gridOptions.api.onNewRows();
}).error(function () {
});
注: ここで c はサーバーから取得される列オブジェクトです。
列を動的に生成して $scope.gridOptions.columnDefs に割り当てると、グリッドは空白になりますが、$scope.customColumns
配列は正しく生成された列オブジェクトで埋められます。これはバグでしょうか、それとも私が何か間違っているのでしょうか。助けてください。
ベストアンサー1
ag-gridでは、gridOptionsの列はグリッドの初期化時に一度だけ使用されます。初期化後に列を変更する場合は、グリッドに通知する必要があります。これは、次の呼び出しによって行われます。gridOptions.api.setColumnDefs()
このAPIメソッドの詳細については、ag-gridドキュメントはこちら。