【问题标题】:Using validators in DataGrid - Flex在 DataGrid 中使用验证器 - Flex
【发布时间】:2010-12-23 14:17:26
【问题描述】:

我有一个可编辑的 DataGrid,类似于:

<mx:Datagrid editable="true" dataProvider="{arrayListPreferences}" id="preferencesGrid">
    <mx:columns>
        <mx:DataGridColumn header="col1" dataField="preference" editable="false"/>
        <mx:DataGridColumn header="col2" dataField="value" editable="true"/>
    </mx:columns>
</mx:Datagrid>

当用户编辑数据时,他点击一个按钮并调用一个将数据保存到数据库的函数,在这个函数中,我必须在发送数据之前验证数据。我想使用简单的验证器(NumberValidator、StringValidator 等),但我不知道如何将此验证器的源设置为第二列中的指定行。

【问题讨论】:

    标签: apache-flex actionscript-3 datagrid mxml


    【解决方案1】:
    <mx:DataGridColumn editable="true" itemRenderer="MyTextInputItemRenderer"/>
    
    
    
    public class MyTextInputItemRenderer extends TextInput{
            private var validator:StringValidator;
            public function MyTextInputItemRenderer(){
                validator = new StringValidator;
                validator.minLength=0;
                validator.property = "text";
                validator.source = this;
            }
            override public function set data(value:Object):void{
                super.data = value;
                validator.validate();
            }
        }
    

    【讨论】:

      【解决方案2】:
      <mx:NumberValidator source="{preferencesGrid.selectedItem}" property="value" 
          integerError="Enter Integer value"
          minValue="18" maxValue="50" domain="int" 
          trigger="{saveButton}" triggerEvent="click"
          valid="saveData();"/>
      

      将验证器的property 设置为所需列的dataField

      【讨论】:

      • 对,工作正常,但我怎样才能将源设置为所需的列而不是使用 {preferencesGrid.selectedItem}?谢谢
      猜你喜欢
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      相关资源
      最近更新 更多