Нахождение x, y позиции строки данных / adavancedDataGrid в Flex - PullRequest
2 голосов
/ 27 февраля 2010

У меня есть flex advancedDataGrid (можно использовать dataGrid, если это работает лучше, хотя мне нравятся мои заголовки мета-столбцов), и я хочу, чтобы всплывающий компонент располагался поверх выбранной строки.

Проблема в том, что я могу выяснить, как ссылаться на фактическую визуализированную строку таблицы данных (а не на элемент поставщика данных), чтобы получить его положение на экране.

Есть ли у кого-нибудь теории о том, как получить доступ к "строке" сетки данных или хотя бы получить ее позицию?

Приветствия

Ответы [ 3 ]

1 голос
/ 17 апреля 2010

Мы закончили с этим в элементе рендеринга, который ссылается на родительский документ. По сути, при щелчке средство визуализации элементов вызывает функцию в родительском элементе со ссылкой на себя.

В этот момент наш родительский документ знал, какая ячейка была выбрана, и мы сделали некоторые манипуляции для определения ее координат x, y:

public function showPopup(selectedItemRenderer:UIComponent):void {
        selectedCell = selectedItemRenderer;

        PopUpManager.removePopUp(editPopup);

        editPopup.height = dg.rowHeight;

        BindingUtils.bindProperty(editPopup, "width", dg, "width");

        editPopup.setStyle("backgroundColor", 0xFF0000);
        if(selectedCell != null) {
            editPopup.x = selectedCell.localToGlobal(new Point(0,0)).x - 1;
            editPopup.y = selectedCell.localToGlobal(new Point(0,0)).y - 1;
        }

        PopUpManager.addPopUp(editPopup, DisplayObject(Application.application));

    }

<mx:DataGrid id="dg" width="500" height="100%"
    dataProvider="{dummyData2}">
<mx:columns>        
    <mx:DataGridColumn
        width="60">
        <mx:itemRenderer>
            <mx:Component>
                <mx:HBox>
                    <mx:Button label="edit" click="{parentDocument.showPopup(this)}" />
                </mx:HBox>                          
            </mx:Component>
        </mx:itemRenderer>
    </mx:DataGridColumn>
    <mx:DataGridColumn 
        dataField="Category">
    </mx:DataGridColumn>     
</mx:columns>

1 голос
/ 14 октября 2011

Я использовал свойство width в dataGridColumn и просто добавил ширину вместе, чтобы получить позицию x, но проблема в том, что когда вы используете lockColumnCount, моя программа не может правильно определить x.

0 голосов
/ 08 марта 2010

Простой способ получить положение сетки данных по x, y - это обернуть сетку данных внутри холста и попытаться захватить mouseX и mouseY холста. При необходимости вы можете перейти на метод localToGlobal.

...