Как определить местоположение, соответствующее клику 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] для ваших целей.

Другие вопросы по тегам