我正在尝试保存PivotGrid状态以备将来使用。我有两个问题
1:行项的expand属性在运行时不更改。在此处https://dojo.telerik.com/@Mzand/obIkEdAY中进行测试:当用户在运行时扩展项目时,dataSource.rows()返回的行的expand属性与初始化时的属性相同。
2:我找不到一种使用“包含字段”菜单以及行,列和度量的方式来保存/加载所选字段(切片)的方法。
答案 0 :(得分:1)
我正在React中工作,但是您应该可以做类似的事情。
这是一个错误,要解决此问题,您可以侦听expandMember和crashMember事件,以手动跟踪扩展行/列的轴和路径。参见下面的代码。
如果您的意思是Configurator,则只需在创建后将其dataSource设置为数据透视表网格的数据源即可。参见下面的createGrid()。
奖金,请参见createGrid的结尾以自动展开Configurator中的项目。
createGrid = () => {
$(`#pivot-grid`).kendoPivotGrid({
dataSource: {
data: data,
schema: schema,
columns: this.state.columns,
rows: this.state.rows,
measures: this.state.measures,
filter: this.state.filter
},
expandMember: this.onExpand,
collapseMember: this.onCollapse
});
let grid = $(`#pivot-grid`).data('kendoPivotGrid');
if (grid) {
if (this.state.expands) {
this.state.expands.forEach(expand => {
if (expand.axis === 'rows') {
grid.dataSource.expandRow(expand.path);
} else {
grid.dataSource.expandColumn(expand.path);
}
});
}
$(`#pivot-config`).kendoPivotConfigurator({
dataSource: grid.dataSource,
filterable: true
});
}
// Expand the items in the configurator fields.
let tree = $('.k-treeview').data('kendoTreeView');
if (tree) {
tree.expand('.k-item');
}
};
onExpand = e => {
this.setState({
expands: [...this.state.expands, {
axis: e.axis,
path: e.path
}]
});
};
onCollapse = e => {
this.setState({
expands: this.state.expands.filter(ex => ex.axis !== e.axis && JSON.stringify(ex.path) !== JSON.stringify(e.path))
});
};
答案 1 :(得分:1)
这是我的尝试 我喜欢的是,它实际上会按您期望的那样更新数据源
function onExpandOrCollapseMember(e, expand) {
var pivot = e.sender;
var axisToUpdate = '_' + e.axis;
var field = _.find(pivot.dataSource[axisToUpdate], f => JSON.stringify(f.name) === JSON.stringify(e.path));
field.expand = expand;
}
在关键选项上,我传入
expandMember: e => onExpandOrCollapseMember(e,true),
collapseMember: e => onExpandOrCollapseMember(e, false),