Flex - 在DataGridColumn中添加新行

时间:2013-09-10 21:16:35

标签: flex actionscript datagrid datagridcolumn

首先,我是Flex的新手。

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

ComboBox选择 - 苹果,橘子和&梨

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

(苹果)nameSpace,countrySpace,infoSpace
(橘子)nameSpace,countrySpace,infoSpace
(Pears)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 个答案:

答案 0 :(得分:0)

重写该功能只会削减一行代码:

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));
}