【问题标题】:Different renderers for datagrid in flex 4.0flex 4.0 中数据网格的不同渲染器
【发布时间】:2014-07-30 06:14:27
【问题描述】:

我正在使用 flex 4.0,并且我有一个包含三列的数据网格。第二列应显示用户根据以下规则所做的选择:如果他们只选择了一个名称,则在该网格单元格中显示一个带有该名称的标签,如果他们选择了多个名称,则应显示一个下拉列表显示标题为“Multiple Selected”,单击下拉菜单将显示与该条目关联的所有名称。因此,第二列可以混合使用标签和下拉列表。例如,他们只选择了一个人的第一个条目,因此对于第一行第二列,它显示了一个带有人名的标签。然后在第二个条目中说他们选择了 2 个名称,第二行第二列显示一个下拉列表,其中两个名称位于下拉列表中。如您所见,第二列有一个标签和一个下拉列表混合。请注意,选择过程不会发生在数据网格中,只是通过设置数据网格的数据提供者来提供信息。

【问题讨论】:

  • 不太确定这里是否有问题,但每一列都有一个互斥的 labelFunction 和 itemRenderer 属性。

标签: apache-flex datagrid


【解决方案1】:

我发现您使用标签和下拉列表创建了一个 itemrenderer,但是当满足条件时您禁用了一个而启用了另一个。这种方法的唯一问题是我也修改了宽度,因为标签首先出现并将下拉列表推到右侧(即使它不可见,有时超出列的宽度)。所以我调整了每个组件的宽度(将一个设置为 100%,而另一个设置为 0%,具体取决于哪个是可见的)但是由于某种原因,当我更新数据时它不会立即更改单元格,只有当我点击标题会改变宽度和可见性。我认为这是因为 UI 没有立即提交宽度调整?我知道这是宽度,因为如果我在数据更新后注释掉宽度调整,您会立即在数据网格中看到更改。例如,如果我尚未选择我选择的名称,则单元格为空白。然后我只选择一个人,然后使用标签组件立即在单元格中显示名称。然后,如果我选择另一个名称,数据将再次更新,您会在数据单元格中看到一些空间(这是不可见的标签,但有一些导致一些空白空间的文本)和带有所选名称的下拉列表和再次,这是一个立竿见影的效果,我不必单击网格来更新它。这是未注释宽度调整的代码:

                                protected function mxdatagriditemrenderer1_dataChangeHandler(event:FlexEvent):void
                                {
                                    if(data.judgmentpart.JudgmentDebtors.length ==1)
                                    {//display label and disable the dropdown list
                                        lblData.visible = true;
                                        lblData.enabled = true;
                                        lblData.percentWidth = 100;
                                        DDLdatagrid.visible = false;
                                        DDLdatagrid.enabled = false;
                                        DDLdatagrid.percentWidth = 0;
                                    }
                                    else if (data.judgmentpart.JudgmentDebtors.length >1)
                                    {
                                        lblData.visible = false;
                                        lblData.enabled = false;
                                        lblData.percentWidth = 0;
                                        DDLdatagrid.visible = true;
                                        DDLdatagrid.enabled = true;
                                        DDLdatagrid.percentWidth = 100;
                                    }
                                    else
                                    {
                                        lblData.visible = false;
                                        lblData.enabled = false;
                                        lblData.percentWidth = 0;
                                        DDLdatagrid.visible = false;
                                        DDLdatagrid.enabled = false;
                                        DDLdatagrid.percentWidth = 0;
                                    }
                                }

                                protected function mxdatagriditemrenderer1_creationCompleteHandler(event:FlexEvent):void
                                {
                                    lblData.visible = false;
                                    lblData.enabled = false;
                                    lblData.percentWidth = 0;
                                    DDLdatagrid.visible = false;
                                    DDLdatagrid.enabled = false;
                                    DDLdatagrid.percentWidth = 0;
                                }

                            ]]>
                        </fx:Script>
                        <s:HGroup width="100%" verticalAlign="middle">
                            <s:Label id="lblData" text="{data.judgmentpart.JudgmentDebtors}"
                                     />
                            <s:DropDownList id="DDLdatagrid" dataProvider="{data.judgmentpart.JudgmentDebtors}"/>
                        </s:HGroup>
                    </s:MXDataGridItemRenderer>

【讨论】:

  • 再次设置dataprovider就可以了(JudgmentDisplay是datagrid id):JudgmentDisplay.dataProvider = JR;
猜你喜欢
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2014-07-26
  • 2012-01-03
  • 1970-01-01
相关资源
最近更新 更多