【问题标题】:Flex - Adding a New Line in a DataGridColumnFlex - 在 DataGridColumn 中添加新行
【发布时间】:2013-09-10 21:16:34
【问题描述】:

首先,我对 Flex 很陌生。

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

组合框选择 - 苹果、橙子和梨

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

(Apples)名称空间、国家空间、信息空间
(Oranges) 名称空间、国家空间、信息空间
(Pears) 名称空间、国家空间、信息空间

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>

【问题讨论】:

    标签: apache-flex actionscript datagrid datagridcolumn


    【解决方案1】:

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

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

    【讨论】:

    • 嗨 CodeMonkey,我尝试了你的方法,它正在填充 Combobox 而不是实际的网格列。有什么想法吗?顺便说一句,TA的意思是templateAttribute.. :)
    • 你能显示更多代码吗?只有当组合框和数据网格共享相同的数据提供者时,才会发生这种情况。另外,您是要向数据网格添加另一列,还是向结果添加另一行?
    • 嗨 Codemonkey,我按要求添加了更多代码。任何帮助将不胜感激。
    • 我也在尝试添加新行或数据网格。
    • 是的,正如我所怀疑的,数据网格和组合框绑定到同一个数据提供者。您可能应该为这两个控件使用不同的数据提供者
    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多