Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex-在DataGridColumn中添加新行_Apache Flex_Actionscript_Datagrid_Datagridcolumn - Fatal编程技术网

Apache flex Flex-在DataGridColumn中添加新行

Apache flex Flex-在DataGridColumn中添加新行,apache-flex,actionscript,datagrid,datagridcolumn,Apache Flex,Actionscript,Datagrid,Datagridcolumn,首先,我对Flex非常陌生 我有一个组合框,里面装满了数据库中的选项。下面是一个带有DataGridColumns的FlexDataGrid(mx:位于下面)。我想找出一种方法,当从comboxbox进行选择并单击add按钮时,它会根据所选内容填充datagrid列中的下一行。关于如何做到这一点有什么想法吗?也许我不应该使用组合框,只填充datagridcolumn,不确定,任何hep都会很好 组合框选择-苹果、橙子和梨 每个选项都与属性链接 (苹果)名称空间、国家空间、信息空间 (橙色)名称空

首先,我对Flex非常陌生

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

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

每个选项都与属性链接

(苹果)名称空间、国家空间、信息空间
(橙色)名称空间、国家空间、信息空间
(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>
public var ta1:ArrayCollection=new ArrayCollection();
//有没有更好的写作方法?
公共函数addDataGridColumn():void
{
变量列表:ArrayCollection=templateAttributes;
var att:TemplateAttribute=新的TemplateAttribute();
(templateProp.dataProvider作为ArrayCollection).addItem(att);
}

重写该函数只会删除一行代码:

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,我试过你的方法,它填充的是组合框而不是实际的网格列。有什么想法吗?顺便说一下,TA表示templateAttribute:)你能展示更多的代码吗?只有当combobox和datagrid共享同一个dataprovider时,才会发生这种情况。另外,您是否正在尝试向datagrid添加另一列,或向结果添加另一行?嗨,Codemonkey,我根据请求添加了更多代码。任何帮助都将不胜感激。我还试图添加一个新行或到datagrid。是的,正如我所怀疑的,datagrid和combobox绑定到同一个dataprovider。您可能应该为这两个控件使用不同的数据提供程序