代码之家  ›  专栏  ›  技术社区  ›  user1932788

Flex-在DataGridColumn中添加新行

  •  0
  • user1932788  · 技术社区  · 12 年前

    首先,我对Flex还很陌生。

    我有一个组合框,里面装满了数据库中的选项。下面是一个带有DataGridColumns的Flex Datagrid(mx:位于下面)。我想找出一种方法,当从组合框中进行选择并单击添加按钮时,它会根据所选内容填充数据网格列中的下一行。对如何做到这一点有什么想法吗?也许我不应该使用组合框,只填充数据网格列,不确定,任何hep都会很棒。

    组合框选择-苹果,橙子,&梨

    每个选项都与属性相关联。

    (苹果)nameSpace,countrySpace,infoSpace
    (橙色)nameSpace,countrySpace,infoSpace
    (皮尔斯)名称空间,国家空间,信息空间

    public var ta1:ArrayCollection = new ArrayCollection();
    
    //Is there a better way of writing this?
    public function addDataGridColumn():void 
    {
      var list:ArrayCollection = templateAttributes;
            var att:TemplateAttribute = new TemplateAttribute();
            (templateProp.dataProvider as ArrayCollection).addItem(att);
    }
    <mx:HBox>
    <mx:ComboBox  dataProvider="{templateAttributes}" width="300" prompt="Select a Template Attribute" enabled="{userInEditMode}" labelField="attributeName" />
    <mx:Button id="addButton" click="addDataGridColumn();" styleName="addButtonOff" enabled="{userInEditMode}" label="ADD" />
    </mx:HBox>
    
    <mx:DataGrid id="templateProp" dataProvider="{templateAttributes}" width="100%" height="100%" editable="true">
      <mx:columns>
        <mx:DataGridColumn id="nameSpace" dataField="nameSpace" headerText="Name" width="25" editable="{userInEditMode}"/>
        <mx:DataGridColumn id="valueSpace" dataField="valueSpace" headerText="Value" width="25" editable="{userInEditMode}" />
        <mx:DataGridColumn id="countrySpace" dataField="countrySpace" headerText="Main Country" width="25" editable="{userInEditMode}" />
        <mx:DataGridColumn id="infoSpace" dataField="infoSpace" headerText="Information" width="25" editable="false"/>
        <mx:DataGridColumn id="infoSpace" dataField="infoSpace" headerText="Information" width="25" editable="false"/>
      </mx:columns>
    </mx:DataGrid>
    
    1 回复  |  直到 12 年前
        1
  •  0
  •   CodeMonkey    12 年前

    重写该函数只会减少一行代码:

    public function addRow() : void {
    var att:TA= new TA();
    att.attributeName = "abc";
    (template1.dataProvider as ArrayCollection).addItem(att);
    

    我不知道TA是什么,但如果你想让它更短,你可以让TA在它的构造函数中使用attributeName。然后你可以这样做:

    public function addRow(attributeName:String) : void {
        (template1.dataProvider as ArrayCollection).addItem(new TA(attributeName));
    }