我正在尝试为网格设置列的宽度。
我从api调用中获取数据,并稍微重建它以显示在网格中。这样可行。我永远不知道我的网格中有多少列,这就是我将$scope.gridOptions.columnDef
定义为空数组的原因,在这种情况下,当网格获取数据时,它会动态呈现列,但在这种情况下如何设置列宽? / p>
代码:
$scope.gridOptions = {
enableGridMenu: false,
paginationPageSizes: [10, 25, 50],
paginationPageSize: 10,
enableFiltering: false,
rowHeight: 40,
// selection
enableRowSelection: true,
enableRowHeaderSelection: false,
multiSelect: false,
modifierKeysToMultiSelect: false,
noUnselect: true,
columnDefs: [],
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
}
};
$scope.gridOptions.columnDefs = [];
$scope.$watch('filter', function (newVal, oldVal) {
var array = [];
if (typeof newVal !== 'undefined') {
param.query = newVal;
lovServices.events(param)
.then(function (response) {
var events = response.events;
angular.forEach(events, function (field) {
var custom = field.eventProperties;
var tempObj = {};
tempObj.title = field.title;
tempObj.description = field.description;
tempObj.studyName = field.studyName;
for (var i = 0; i < custom.length; i++){
tempObj[custom[i].name] = custom[i].value
}
array.push(tempObj);
});
$scope.gridOptions.data = array;
for (var i = 0; i < $scope.gridOptions.columnDefs.length; i++) {
$scope.gridOptions.columnDefs[i].width = '*';
}
$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);
$scope.gridApi.core.refresh()
})
}
});
如您所见,代码清晰,控制台中没有错误,我的宽度定义不起作用。
那我错过了什么?我感谢任何帮助。
答案 0 :(得分:1)
尝试将width
属性设置为普通数字或百分比值。
示例:50或'50%';
答案 1 :(得分:1)
所以我在初始化数据后检查了控制台$ scope.gridOptions.columnsDef。它是一个空数组,所以我在init之后设置了间隔,它终于有效了!
我的代码如下:
$scope.gridOptions.data = array;
$interval(function () {
for (var i = 0; i < $scope.gridOptions.columnDefs.length; i++) {
$scope.gridOptions.columnDefs[i].width = '20%';
}
$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);
$scope.gridApi.core.refresh()
})
滚动的css:
#cp-grid .ui-grid-render-container-body .ui-grid-viewport {
overflow-x: scroll !important;
}