Установка свойства на валидаторе - PullRequest
0 голосов
/ 28 марта 2011

Я использую 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 Ответ

0 голосов
/ 02 июля 2013

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

Для свойства source документация гласит:

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

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

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

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

property="locRuleId"
...