ColumnsDirective 的列值在动态添加列时不显示
ColumnsDirective's columns values not showing when columns are being added dynamically
我需要根据用户在许多字段中的选择动态显示 ColumnsDirective,这可能不仅是 GanttComponent 的标准字段按照入门文档中所示的方式使用:
this.taskFields = {
id: 'TaskID',
name: 'TaskName',
startDate: 'StartDate',
duration: 'Duration',
progress: 'Progress',
child: 'subtasks',
};
当初始 GanttComponent 显示中的 ColumnsDirective 中包含这些其他字段时,列单元格上的值将显示
但是当这些字段在初始显示后动态添加时,它们的值将不会显示在它们的列单元格中。
这是一个stackblitz showing the issue (screenshot)
我尝试在 ColumnsDirective 中动态添加之前就在 taskFields 中预先定义这些列,但这并没有解决问题。
我们建议您使用 showColumn 和 hideColumn public 方法动态更改列可见性,而不是刷新整个甘特图。
<button type="button" onClick={ev => {
if (this.ganttInstance.getGridColumns()[2].visible) {
this.ganttInstance.hideColumn('fieldXX1');
}
else {
this.ganttInstance.showColumn('fieldXX1');
}
}}>Change Comlumns</button>
示例 - https://stackblitz.com/edit/react-6lscfc-yqzk6h?file=index.js
我们也提供了解决方案,使用refresh方法刷新整个甘特图。
<button type="button" onClick={ev => {
//...
setTimeout(function () {
var obj = document.getElementById('Default').ej2_instances[0];
obj.refresh();
}, 100);
}}>Change Columns</button>
示例 - https://stackblitz.com/edit/react-6lscfc-n3xgjh?file=index.js
我需要根据用户在许多字段中的选择动态显示 ColumnsDirective,这可能不仅是 GanttComponent 的标准字段按照入门文档中所示的方式使用:
this.taskFields = {
id: 'TaskID',
name: 'TaskName',
startDate: 'StartDate',
duration: 'Duration',
progress: 'Progress',
child: 'subtasks',
};
当初始 GanttComponent 显示中的 ColumnsDirective 中包含这些其他字段时,列单元格上的值将显示
但是当这些字段在初始显示后动态添加时,它们的值将不会显示在它们的列单元格中。
这是一个stackblitz showing the issue (screenshot)
我尝试在 ColumnsDirective 中动态添加之前就在 taskFields 中预先定义这些列,但这并没有解决问题。
我们建议您使用 showColumn 和 hideColumn public 方法动态更改列可见性,而不是刷新整个甘特图。
<button type="button" onClick={ev => {
if (this.ganttInstance.getGridColumns()[2].visible) {
this.ganttInstance.hideColumn('fieldXX1');
}
else {
this.ganttInstance.showColumn('fieldXX1');
}
}}>Change Comlumns</button>
示例 - https://stackblitz.com/edit/react-6lscfc-yqzk6h?file=index.js
我们也提供了解决方案,使用refresh方法刷新整个甘特图。
<button type="button" onClick={ev => {
//...
setTimeout(function () {
var obj = document.getElementById('Default').ej2_instances[0];
obj.refresh();
}, 100);
}}>Change Columns</button>
示例 - https://stackblitz.com/edit/react-6lscfc-n3xgjh?file=index.js