在验证器上设置'property'

时间:2011-03-28 18:27:26

标签: flex actionscript-3 flex3 flex4

我在数据网格的列中的每个单元格上使用NumberValidator。源设置为datagrid的dataProvider,但属性是问题。我不能只说'text',因为我使用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 :(得分:0)

此处的解决方案是使用sourceproperty值的正确组合。你走在正确的轨道上。

对于source属性,文档说明了这一点:

  

此属性支持以点分隔的字符串来指定嵌套属性。

因此,在您的情况下,您可能希望将source属性字符串设置得更长一些,这可以达到包含要验证的属性的项目。也许:

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

然后你要验证的财产就是:

property="locRuleId"