我遇到使用GroupingView的GridPanel的问题:
var grid1 = new Ext.grid.GridPanel({
store: new Ext.data.GroupingStore({
fields: [ ]
}),
cm: new Ext.grid.ColumnModel([ ]),
selModel: new Ext.grid.RowSelectionModel({ singleSelect: false }),
view: new Ext.grid.GroupingView({
groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "' + BPS.Resource.items + '" : "' + BPS.Resource.item + '"]})'
})
});
我调用了重新配置的事件,它设置了一个新的商店和列模型。商店是GroupingStore,我设置了我想要使用的groupField:
// define the store
var store1 = new Ext.data.GroupingStore({
proxy: new Ext.data.HttpProxy({
url: listConfig.dataURL + '?sort=' + listConfig.defaultSortField + '&dir=' + listConfig.defaultSortDirection,
method: 'POST'
}),
autoLoad: false,
remoteSort: true,
remoteGroup: true,
groupOnSort: false,
groupField: listConfig.groupingColumn,
sortInfo: {
field: listConfig.defaultSortField,
direction: listConfig.defaultSortDirection
},
paramNames: {
start: 'skip',
limit: 'take',
sort: 'sort',
dir: 'dir'
},
reader: new Ext.data.JsonReader()
});
// reconfigure the grid
grid1.reconfigure(store1, new Ext.grid.ColumnModel(listConfig.columnDefinitions));
然而,这似乎在第一次加载时起作用。如果我没有配置它,它会在列上设置分组,或者根本不设置分组。但是,在用户关闭网格面板中的分组并运行相同的代码以加载配置后,它不会更改它以进行分组。
如何重新配置网格以使用或不使用分组?
答案 0 :(得分:4)
我遇到了分组存储问题。当我修改记录的字段并且分组在我修改字段的列上时,网格不会自动重新组合记录。 此外,在添加新行时,分组不正确,添加的记录未添加到正确的组中。
我通过将当前的groupBy字段保存在全局var中并且每次都在更新或afteredit并且从网格中添加了事件而解决了这个问题我已经解组,然后将groupBy()与包含存储所在的当前列的var一起使用分组。
仅使用grid.getView()。refresh();没有做到这一点。
当然问题是,这个用户友好吗?因为每次修改行中的字段并在修改的该字段的列上设置分组时,记录将被重新分组,用户可能无法找到他正在修改的行。
更好的解决方案:只有unGroup然后将groupBy()与存储当前groupBy列的var一起使用,当正在编辑的记录的焦点丢失时。因此模糊事件。
答案 1 :(得分:1)
我认为您将侦听器附加到GroupingStore的groupchange事件并记录选择作为分组字段的字段。然后在重新配置时,您告诉商店使用groupBy()函数按该字段进行分组,或使用ungroup()函数删除分组。然后调用网格的视图refresh()方法。
请注意,我没有对此进行测试,因此它可能是完全垃圾! : - )