datagrid内联itemrender更改dataprovider值

时间:2012-05-23 00:37:39

标签: actionscript-3 flex flash-builder mxml

我使用内联itemrenderer创建一个datagrid。 渲染器是下拉列表。 当dropdowlist值改变时,我想更新dataprovider但我没有找到如何做到这一点。 你能救我吗?

由于

[Bindable] private var DP_PRAT_INIT:ArrayCollection;

<s:DataGrid id="dgTuVous" fontWeight="normal" 
                                        dataProvider="{DP_PRAT_INIT}"
                                        width="100%" height="100%" 
                                        horizontalScrollPolicy="on"
                                        fontSize="10"

                                        >
                                <s:columns>
                                    <s:ArrayList>
                                        <s:GridColumn dataField="prInitiales" width="40" headerText="Prat" />
                                        <s:GridColumn  width="75" dataField="prTuVous"
                                                      headerText="Tu/Vous" editable="true">
                                            <s:itemRenderer>
                                                <fx:Component>
                                                    <s:GridItemRenderer>
                                                        <fx:Script>
                                                            <![CDATA[
                                                                import spark.events.IndexChangeEvent;



                                                                protected function ddlTuVous_changeHandler(event:IndexChangeEvent):void
                                                                {

                                                                    DP_PRAT_INIT[ddlTuVous.selectedIndex].prTuVous=ddlTuVous.selectedItem;

                                                                    trace ("ddlTuVous.selectedItem" +ddlTuVous.selectedItem) ;

                                                                }

                                                            ]]>
                                                        </fx:Script>
                                                        <s:DropDownList width="100%" selectedIndex="1" id="ddlTuVous"
                                                                        change="ddlTuVous_changeHandler(event)">
                                                            <s:dataProvider>
                                                                <s:ArrayList>
                                                                    <fx:String>Tu</fx:String>
                                                                    <fx:String>Vous</fx:String>
                                                                </s:ArrayList>
                                                            </s:dataProvider>
                                                        </s:DropDownList>
                                                    </s:GridItemRenderer>
                                                </fx:Component>
                                            </s:itemRenderer>



                                        </s:GridColumn>

                                    </s:ArrayList>
                                </s:columns>
                            </s:DataGrid>

1 个答案:

答案 0 :(得分:1)

使用outerDocument属性引用主机控件...如果要访问该阵列,可以调用outerDocument.DP_PRAT_INIT。但是,该数组是私有的,所以你必须公开它。或者,您可以创建一个可以在outerDocument上调用的公共函数,但是......哎呀。

如果我正确理解您的代码,您应该访问data的{​​{1}}属性,该属性与GridItemRenderer相同,但它更好,因为您没有可能指数不匹配......

所以,你真正想要的是:

outerDocument.DP_PRAT_INIT[ddlTuVous.selectedIndex]