Установка свойства на валидаторе

Я использую NumberValidator для каждой ячейки в столбце таблицы данных. В качестве источника задано значение dataProvider сетки данных, но проблема заключается в свойстве. Я не могу просто сказать "текст", потому что я использую labelFunction для получения свойства, потому что оно вложено в другой объект.

Есть ли способ обойти это? Мне нужно будет создать свой собственный валидатор? Надеюсь нет. Любые советы приветствуются.

Спасибо!

<mx:NumberValidator id="security_locate_numberValidator" 
 source="{this.secId_dg.dataProvider}" lowerThanMinError="A locate is required."
 property="marketRule.locRule.locRuleId" minValue="0" />

 <mx:DataGrid
    id="secId_dg"
    editable="true"
    dataProvider="{this.marketRuleServiceEntity.exceptionComposites}"
    itemEditEnd="onSecurityPicked(event)"
    width="100%"
    rowCount="10"
    tabEnabled="false">

    <mx:columns>

        <mx:DataGridColumn
            headerText="Security ID"
            labelFunction="getSecId"
            editorDataField="text"
            editable="true">
            <mx:itemEditor>
                <mx:Component>
                    <application:SecuritySuggestInput 
                        maxWidth="160"
                        minWidth="160"
                        toolTip="Search on a Ticker, CUSIP, or Sedol"
                        width="160"
                        prompt="Search Security"/>
                </mx:Component>
            </mx:itemEditor>
        </mx:DataGridColumn>

        <mx:DataGridColumn
            headerText="Description"
            dataField="description"
            width="200"
            editable="false"/>
        <mx:DataGridColumn
            headerText="Locate"
            headerStyleName="leftGridHeader"
            paddingRight="4"
            textAlign="right"
            labelFunction="getLocate"
            editable="true"
            dataField="locRuleDesc"
            editorDataField="selectedLabel"
            itemEditor="com.fidelity.primeservices.act.editor.overrides.LocatesEditor"/>
        <mx:DataGridColumn
            headerText="Comments"
            width="200"
            editable="true"/>
        <mx:DataGridColumn
            headerText="Delete"
            editable="false"
            itemRenderer="com.fidelity.primeservices.act.renderer.overrides.SecuritiesDeleteIconRenderer"/>
    </mx:columns>
</mx:DataGrid>

1 ответ

Решение здесь состоит в том, чтобы использовать правильную комбинацию source а также property ценности. Вы были на правильном пути.

Для source собственность документация говорит это:

Это свойство поддерживает разделенные точками строки для указания вложенных свойств.

Так что в вашем случае, вы бы хотели сделать свой source строка свойства немного длиннее, что-то, что дошло до элемента, содержащего свойство для проверки. Может быть:

source="this.secId_dg.selectedItem.marketRule.locRule"

Тогда ваша собственность для проверки будет просто:

property="locRuleId"
Другие вопросы по тегам