【问题标题】:Flex 4 Datagrid s:MXDataGridItemRenderer issue - default styles are lost?Flex 4 Datagrid s:MXDataGridItemRenderer 问题 - 默认样式丢失?
【发布时间】:2011-05-26 14:05:18
【问题描述】:

所有,我已经在我的所有 Datagrid 列上实现了一个 HeaderRenderer。当我这样做时,似乎所有默认的 DataGrid 列标题样式都丢失了,例如:

  • 当我将鼠标悬停在列标题上时,DataGrid 中的默认设置是以另一种颜色(与行选择颜色相同的颜色)显示它 - 现在不会发生这种情况。
  • 当我单击列标题时,DataGrid 中的默认设置是以另一种颜色(与行选择颜色相同的颜色)显示它 - 现在不会发生这种情况。

我是否在我的 s:MXDataGridItemRenderer 中重新应用了这些样式?这是怎么做到的……

我的渲染器代码如下...

<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                      xmlns:s="library://ns.adobe.com/flex/spark" 
                      xmlns:mx="library://ns.adobe.com/flex/mx" 
                      focusEnabled="true">
<s:states>
    <s:State name="none" />
    <s:State name="asc" />
    <s:State name="desc" />
</s:states>

<!-- border - bottom -->
<s:Rect bottom="0" right="0" left="0" height="1">
    <s:fill>
        <s:SolidColor color="0x9C9C9C" />
    </s:fill>
</s:Rect>
<!-- border - top -->
<s:Rect top="0" right="0" left="0" height="1">
    <s:fill>
        <s:SolidColor color="0x9C9C9C" />
    </s:fill>
</s:Rect>
<s:HGroup verticalAlign="middle" width="100%">
    <s:HGroup horizontalAlign="left" width="100%" paddingLeft="5">
    <s:Label id="lblData"  width="100%"
             top="0" left="5" right="0" bottom="0" 
             paddingTop="5" paddingBottom="5"
             verticalAlign="middle"
             color="black"
             text="{dataGridListData.label}"
             maxDisplayedLines="1"
             />
    </s:HGroup>
    <s:HGroup horizontalAlign="right" verticalAlign="middle" paddingRight="2" >
        <s:Label id="lblcolCount" 
                 top="0" left="0" right="0" bottom="0" 
                 paddingTop="5" paddingBottom="5"
                 verticalAlign="middle"
                 color="black"
                 text="{colCount}" />
        <mx:Image id="image_down" top="0" left="0"  bottom="0"
                  source.asc="{GridColumnSortControlAscending}"  verticalAlign="middle"
                  source.desc="{GridColumnSortControlDecending}"/>
    </s:HGroup>

</s:HGroup>
<fx:Script>
    <![CDATA[

        [Bindable]
        public var colCount:String = "";
          ]]>
</fx:Script>

【问题讨论】:

  • 我添加了 Flex 标签,让您的问题得到更多关注。

标签: apache-flex datagrid flex4 itemrenderers


【解决方案1】:

是的,您在创建自定义渲染器时会丢失所有样式。您可以查看 DataGridHeader 的代码并尝试复制它,但我个人认为它的工作量太大。我会在您设置自己的样式的所有列中添加一个“默认”标题渲染器,然后从那里添加您的新渲染器。

另外,谁会想要默认的 Flex3 样式? :P

【讨论】:

  • 谢谢,但我实际上找到了解决方案...需要在 s:MXDataGridItemRenderer 标签中设置属性 autoDrawBackground="false"。谁能想到!!! - 在任何地方都不明显......
猜你喜欢
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 2011-06-26
  • 2022-11-11
  • 2011-04-01
  • 2012-08-21
相关资源
最近更新 更多