我在数据网格的列中的每个单元格上使用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>
答案 0 :(得分:0)
此处的解决方案是使用source
和property
值的正确组合。你走在正确的轨道上。
对于source
属性,文档说明了这一点:
此属性支持以点分隔的字符串来指定嵌套属性。
因此,在您的情况下,您可能希望将source
属性字符串设置得更长一些,这可以达到包含要验证的属性的项目。也许:
source="this.secId_dg.selectedItem.marketRule.locRule"
然后你要验证的财产就是:
property="locRuleId"