【问题标题】:Overlay text on AdvancedDataGrid in Flex 3Flex 3 中 AdvancedDataGrid 上的叠加文本
【发布时间】:2011-04-20 20:08:59
【问题描述】:

当数据调用没有返回任何结果时,我试图将标签覆盖到 AdvancedDataGrid 上。

这是我要完成的工作的模型http://i.stack.imgur.com/6Djga.png

我尝试遵循之前的答案:Drawing an overlay in custom flex component,但这对我不起作用,因为 AdvancedDataGrid 不是容器(因此没有 rawChildren 属性)。

我不希望与数据提供者混为一谈,因为该表将在许多位置使用,这些位置将具有不同的列和标签字段。

欢迎提出任何建议。

【问题讨论】:

    标签: apache-flex flex3 advanceddatagrid


    【解决方案1】:

    举一个关于 Flextras 提到的简单例子:

    <s:Group>
      <mx:DataGrid dataProvider="{myDataProvider}">
        <mx:columns>
          <mx:DataGridColumn dataField="test1" />
          <mx:DataGridColumn dataField="test2" />
          <mx:DataGridColumn dataField="test3" />
          <mx:DataGridColumn dataField="test4" />
        </mx:columns>
      </mx:DataGrid>
    
      <s:Label text="Overlay text here" visible="{myDataProvider.length == 0}" x="10" y="35" />
    </s:Group>
    

    【讨论】:

    • 感谢您的回复,正如我在回复 Flextras 评论时所说,这对我不起作用,因为我不能在每个 AdvancedDataGrid 周围放置一个容器,也不能将 AdvancedDataGrid 的子类更改为这样没有破坏很多东西。
    • @david,你能在DataGrid 中添加ItemRenderer 吗?
    【解决方案2】:

    将 AdvancedDataGrid 与标签叠加层一起放入容器中。将标签放在 DataGrid 的顶部;并根据 dataProvider 的长度更改其可见性。

    【讨论】:

    • 感谢您的回复,不幸的是,这对我不起作用,因为我正在使用大型已建立的代码库,我无法在不破坏很多东西的情况下更改 AdvancedDataGrid 的子类来做到这一点。跨度>
    • @David 您只需将 AdvancedDataGrid 的子类替换为包含容器的另一个类。这应该不会太难。如果您需要在新类中镜像 advancedDataGrid 的许多属性,可能会很乏味;但它应该仍然可行。
    • @David 和@Flextras,是的,这在实践中确实有效,我们通过扩展 ADG 来做到这一点,并使用绑定将属性传递到底层 ADG。它最终变得一团糟(有多个版本这样做,所以很容易错过为一个版本或另一个版本中的新属性添加绑定)。最终,我们现在不得不走重构路线,这样做会非常痛苦,但基本上我们选择删除直通,让网格用户分别处理组件
    • 基本上定义为单个 MXML 节点的内容现在定义为顶级 MXML 节点,其属性是标题/标题区域和其下方的高级数据网格(整个事情实际上是Canvas,由于我们项目的规模和性质,我们无法切换到 Flex 4)
    • 所以我又查看了我们的代码,找到了一个带有画布的位置,我可以用它来定位覆盖。感谢大家的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2010-12-15
    • 2011-12-25
    相关资源
    最近更新 更多