ag-grid - Ag-grid 需要大量时间来显示多个 Cell Renderer 和 Value Getter
问题描述
我必须在对话框中呈现 ag-grid 表。
我的网格有多个cellRenderer, valueGetter and cellRendererParams
。columnDefs
我没有将服务器数据转换为rowData
并field
用于渲染,而是使用valueGetter从服务器数据中获取值,例如
valueGetter: 'data.screen1.graph.visible'
.
我的 13 列 150 行的 ag-grid 需要花费大量时间来渲染。是因为valueGetter
我的桌子需要时间来渲染吗?
以下是我的示例数据:
private createColumnDefs() {
this.columnDefs = [{
headerName: 'Header1',
cellRenderer: (params) => {
return params.data.serverObject1.function === 'input' ? 'I' : 'O';
},
minWidth: 50,
width: 70,
}, {
headerName: 'Header2',
field: 'serverObject1.name',
minWidth: 60,
width: 80,
}, {
headerName: 'Header3',
field: 'value',
cellRenderer: 'valueFieldRenderer',
minWidth: 100,
width: 250,
}, {
headerName: 'Header4',
cellRenderer: 'checkBoxRenderer',
valueGetter: 'data.serverObject1.graph.visible',
cellRendererParams(params) {
return {
disabledVal : params.data.localArray.length > 0 || params.data.attribute1 !== null
};
},
minWidth: 70,
width: 70,
}, {
headerName: 'Header5',
cellRenderer: 'checkBoxRenderer',
valueGetter: 'data.serverObject1.archive',
cellRendererParams(params) {
return {
disabledVal : params.data.serverObject1.function === 'input'
};
},
minWidth: 70,
width: 70,
}, {
headerName: 'Header6',
cellRenderer: 'checkBoxRenderer',
valueGetter: 'data.serverObject1.alarm',
cellRendererParams(params) {
return {
disabledVal : !((params.data.serverObject1.function === 'output') && (params.data.serverObject1.type === 'bool'))
};
},
minWidth: 70,
width: 70,
},
{
headerName: 'Header7',
cellRenderer: 'textBoxRenderer',
valueGetter: 'data.serverObject1.active',
minWidth: 150,
width: 150,
},
{
headerName: 'Header8',
cellRenderer: 'textBoxRenderer',
valueGetter: 'data.serverObject1.inactive',
minWidth: 150,
width: 150,
},
{
headerName: 'Header11',
cellRenderer: 'textBoxRenderer',
valueGetter: (params) => params.data.text1,
minWidth: 150,
width: 150,
cellStyle: (params) => {
return (this.diagram === 'XYZ' &&
!(params.data.serverObject1.function === 'output' || params.data.serverObject1.type === 'string'
|| params.data.serverObject1.type === 'int')) ? {display: 'block'} : {display: 'none'};
}}
];
}
单元格渲染器:
@Component({
selector: 'app-check-box',
template:
`
<input type="checkbox" [(ngModel)]="params.value" [id]="getID(params)" class="primary small"
(change)="onChange($event)">
<label [for]="getID(params)" class="text-hide">hidden</label>
`,
styleUrls: ['./test.component.css']
})
// tslint:disable-next-line:component-class-suffix
export class CheckBoxRenderer implements AfterViewInit, ICellRendererAngularComp {
private params: ICellRendererParams;
constructor(private readonly translateService: TranslateService) { }
agInit(params: ICellRendererParams): void {
this.params = params;
}
public onChange(event) {
}
refresh(params: any): boolean {
return false;
}
public getID(params): string {
return params.column.colId + params.rowIndex;
}
afterGuiAttached(params?: IAfterGuiAttachedParams): void {
}
ngAfterViewInit(): void {
}
translate(key: string, params?: any): string {
return this.translateService.instant(key, params);
}
}
我应该考虑转换为rowData
以减少加载时间吗?
解决方案
推荐阅读
- html - React Bootstrap 的 ... 使用打字稿给出 ts2322 警告
- c - 如何在我的代码中增加 2.5% 的价格?
- php - PHP:GOTO 是邪恶的,如果顶部出现错误,如何显示页脚
- python - 如何规范化 CSV 中的字典?
- javascript - (Javascript) 为什么borderBottomRightRadius 设置为borderRadius?
- python - Boto3 python 脚本 AMI 备份 create_image 函数不接受 TagSpecifications
- python - python字典分配错误的键
- python - 如何将没有双引号元素的列表的字符串表示形式转换为实际列表?
- mysql - 你如何在 MYSQL 外键中获取数据?
- google-apps-script - 通过 Google Apps 脚本仅输入一次数据后锁定单元格