Пользовательский компонент dataGrid selectionMode как свойство - PullRequest
0 голосов
/ 03 августа 2011

У меня есть пользовательский компонент, в котором есть AdvancedDataGrid.Я хочу, чтобы этот компонент можно было многократно использовать, поэтому необходимо установить значение параметра selectionMode в качестве свойства компонента.

В mxml я хочу установить свойство следующим образом:

<comp:MyComp itemDataGridSelectionMode="singleCell" .../>

Внутри MyComp actionScript у меня есть метатегкак это:

[Inspectable(enumeration="singleRow, multipleRows, singleCell, multipleCells", defaultValue="singleRow")]
public var itemDataGridSelectionMode:String;

Как мне связать эту переменную itemDataGridSelectionMode с advancedDatagrid selectionMode?

UPDATE: Вот небольшое тестовое приложение, полностью работающий код:

<!--MyComp.mxml-->
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" width="638" height="500">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        [Inspectable(enumeration="singleRow, multipleRows, singleCell, multipleCells", defaultValue="singleRow")]
        public function set itemsSelectionMode(value:String):void
        {
            this.adgItems.selectionMode = value;
        }

        public function get itemsSelectionMode():String
        {
            return this.adgItems.selectionMode;
        }
    ]]>
</fx:Script>
<mx:AdvancedDataGrid id="adgItems" designViewDataType="flat" width="100%" height="100%">
    <mx:columns>
        <mx:AdvancedDataGridColumn headerText="Column 1" dataField="col1"/>
        <mx:AdvancedDataGridColumn headerText="Column 2" dataField="col2"/>
        <mx:AdvancedDataGridColumn headerText="Column 3" dataField="col3"/>
    </mx:columns>
</mx:AdvancedDataGrid>
</s:Group>

<!-- Application.mxml -->
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:comp="*">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<comp:MyComponent x="272" y="86" itemsSelectionMode="singleCell"/>
</s:Application>

Ошибка: недопустимое значение: множественные строки.Это должен быть один из SingleRow, множественные строки, одиночные ячейки, множественные ячейки.

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Если у вас есть общедоступная переменная в вашем пользовательском компоненте, сделайте следующее:

[Inspectable(enumeration="singleRow, multipleRows, singleCell, multipleCells", defaultValue="singleRow")]
public function set itemDataGridSelectionMode(value:String):void
{
   advancedDatagrid.selectionMode = value;
}

public function get itemDataGridSelectionMode():String
{
   return advancedDatagrid.selectionMode;
}
1 голос
/ 03 августа 2011

Полагаю, вы можете установить itemDataGridSelectionMode как [Bindable], а затем связать его со свойством selectionMode в AdvancedDataGrid.

0 голосов
/ 03 августа 2011

Один из способов:

BindingUtils.bindProperty(datagridId, 'selectionMode', this, itemDataGridSelectionMode);

ИЛИ Используйте метод установки вместо определения переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...