Расширение компонента DataGrid и добавление к нему кнопок - PullRequest
0 голосов
/ 09 февраля 2011

Я бы хотел расширить стандартный компонент DataGrid в flex с помощью mxml. Но я хочу добавить кнопки в нижней части компонента. Я пытался попробовать следующее, но это не работает ...

Добавляю ли я кнопку не к тому элементу?

<mx:DataGrid xmlns:fx = "http://ns.adobe.com/mxml/2009"
             xmlns:mx = "library://ns.adobe.com/flex/mx"
             xmlns:s = "library://ns.adobe.com/flex/spark">

    <fx:Script>
        <![CDATA[
            override protected function createChildren():void
            {
                super.createChildren();

                listContent.addChild(button);
            }
        ]]>
    </fx:Script>

    <s:Button id="button" label = "asdasdas"/>
</mx:DataGrid>

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Вам необходимо определить «Не работает»! Вы получаете ошибки компилятора? Или ошибки во время выполнения? Или кнопка просто не появляется? Я возьму на себя последнее.

DataGrid не имеет какого-либо механизма позиционирования или размещения дочерних элементов. Ваша кнопка, скорее всего, имеет высоту и ширину нуля и находится в позиции 0,0; делая его эффективно невидимым. Многие классы контейнеров Flex имеют возможность определять размер и расположение своих детей; но DataGrid не является контейнером и не предоставляет встроенных функций для этого. Основное внимание уделено работе с массивом столбцов.

Вам потребуется переопределить updateDisplayList () для позиционирования функции. Вполне возможно, вам придется внести изменения в commitProperties () и measure () по пути. Вам также может понадобиться переделать расположение и размер столбцов, чтобы они не мешали вашей новой кнопке. Если вещи закрыты в приватных методах (что вероятно), то вы не в таком веселом времени.

Ознакомьтесь с методами Flex Component LifeCycle для получения дополнительной информации, а также просмотрите код DataGrid, чтобы выяснить, что он делает.

Вам может быть проще поместить кнопку и DataGrid в контейнер и рассматривать этот контейнер как единый объект, а не пытаться визуализировать Button внутри DataGrid.

0 голосов
/ 10 февраля 2011

Понял.Все, что мне нужно было сделать, это заменить listContent.addChild (button);с ...

parent.addChild (кнопка);

Спасибо!

...