Как определить местоположение, соответствующее клику PivotCell?
Допустим, пользователь дважды щелкает или щелкает правой кнопкой мыши по основной ячейке. Как я могу определить местоположение, которое было выбрано?
Например, пользователь может захотеть выбрать местоположение, чтобы пересмотреть свою позицию. Поэтому, в зависимости от местоположения, мне нужно будет отправить соответствующую книгу / регион в сетку.
1 ответ
Решение
Ты можешь использовать com.quartetfs.pivot.live.client.drillthrough.impl.DrillthroughExecutor.execute(IPivotDataCell, IMdxSelect, Cube, IMemberHasChildren, IMdxVisitorContext)
для этой задачи. Это то, что Live использует для Drillthrough. Это можно сделать в вашем IPivotCellContextHandler
как это:
@Override
public void onPivotCellContext(PivotCellContextEvent event) {
final IPivotCell pivotCell = event.getPivotCell();
if(null != pivotCell && pivotCell instanceof IPivotDataCell) {
//Show the context menu only for pivot-table data
IPivotDataCell pivotDataCell = (IPivotDataCell) pivotCell;
IMdxSelect select = event.getMdxModelPresenter().getMdxModel().getMdxSelect();
Cube cube = event.getMdxModelPresenter().getMdxModel().getCube();
FilterDescription fd = locationExtractor.execute(
pivotDataCell,
select,
cube,
new MdxModelMemberHasChildren(event.getMdxModelPresenter().getMdxModel()),
new DefaultMdxVisitorContext(select, cube)
);
// If filter description is too complicated we do not display the menu
if (fd == null) {
//TODO add entry in menu explaining that mdx is too complext to be converted to a location.
}
if (fd.getLocations().length != 1) {
//TODO handle, this should not happen but should be checked.
}
И тогда вы можете использовать fd.getLocations[0]
для ваших целей.