当单元格的值大于 6 时,将数据网格单元格的背景颜色设置为黄色

发布于 2024-10-06 08:13:51 字数 61 浏览 3 评论 0原文

我正在使用 flex 3.5 。当数据网格中的数据超过 6 时,我想将数据网格中单元格的背景颜色设置为黄色。

Iam using flex 3.5 . I want to set the back ground color of cell in a datagrid to yellow when the data in it is more than 6 .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七七 2024-10-13 08:13:51

创建自定义渲染器并在设置数据属性时测试值:

override public function set data(value:Object):void
{
  super.data = value; 

  if(data > 6)
    setStyle("backgroundColor", 0xFFFF00);
  else
    setStyle("backgroundColor", 0xFFFFFF);
}

请记住,如果测试失败,您需要恢复颜色,因为列表重用渲染(如果不这样做,您将获得随机的黄色背景)。

Create a custom renderer and test the value when the data property is set:

override public function set data(value:Object):void
{
  super.data = value; 

  if(data > 6)
    setStyle("backgroundColor", 0xFFFF00);
  else
    setStyle("backgroundColor", 0xFFFFFF);
}

Remember that you need to revert the color if the test fails since Lists reuse renders (you would get random yellow backgrounds if you dont).

清欢 2024-10-13 08:13:51

我过去使用 AdvancedDataGridAdvancedDataGridRendererProvider 做过类​​似的事情。我使用的是 Flex 4.0 SDK,但由于 AdvancedDataGrid 组件在 3.5 和 4.0 之间没有更改,因此代码应该类似。

渲染器“MyRenderer.mxml”:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:mx="library://ns.adobe.com/flex/mx" 
             backgroundColor="{SetBackgroundColor(data)}">
    <fx:Script>
        <![CDATA[
            [Bindable] private var bgColor:uint = 0xFFFFFF;

            private function SetBackgroundColor(obj:Object):uint
            {
                var returnColor:uint = 0xFFFFFF;

                if (obj["Quantity"] != null)
                {
                    if (int(obj["Quantity"]) > 6)
                    {
                        returnColor = 0xFFF8DD;
                    }
                    else
                    {
                        returnColor = 0xFFFFFF;
                    }

                return returnColor;
            }

            override public function set data(value:Object):void
            {
                super.data = value;
                if (value["Quantity"] != null)
                {
                    theLabel.text = value["Quantity"].toString();
                }
                else
                {
                    theLabel.text = "";
                }
            }
        ]]>
    </fx:Script>
    <mx:Label id="theLabel" />
</mx:HBox>

使用渲染器:

<mx:AdvancedDataGrid dataProvider="{YourArrayCollection}">
    <mx:columns>
        <mx:AdvancedDataGridColumn id="colQuantity" headerText="Qty" dataField="Quantity"/>
    </mx:columns>
    <mx:rendererProviders>
        <mx:AdvancedDataGridRendererProvider column="{colQuantity}" depth="1" dataField="Quantity" renderer="MyRenderer" />
    </mx:rendererProviders>
</mx:AdvancedDataGrid>

编辑: 我在函数中设置了backgroundColor,以便当itemRenderers被回收时函数将被调用并将背景颜色设置为正确的值。

I've done something similar in the past using the AdvancedDataGrid and a AdvancedDataGridRendererProvider. I'm using the Flex 4.0 SDK but since the AdvancedDataGrid component hasn't changed between 3.5 and 4.0, the code should be similar.

The renderer "MyRenderer.mxml":

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:mx="library://ns.adobe.com/flex/mx" 
             backgroundColor="{SetBackgroundColor(data)}">
    <fx:Script>
        <![CDATA[
            [Bindable] private var bgColor:uint = 0xFFFFFF;

            private function SetBackgroundColor(obj:Object):uint
            {
                var returnColor:uint = 0xFFFFFF;

                if (obj["Quantity"] != null)
                {
                    if (int(obj["Quantity"]) > 6)
                    {
                        returnColor = 0xFFF8DD;
                    }
                    else
                    {
                        returnColor = 0xFFFFFF;
                    }

                return returnColor;
            }

            override public function set data(value:Object):void
            {
                super.data = value;
                if (value["Quantity"] != null)
                {
                    theLabel.text = value["Quantity"].toString();
                }
                else
                {
                    theLabel.text = "";
                }
            }
        ]]>
    </fx:Script>
    <mx:Label id="theLabel" />
</mx:HBox>

Using the renderer:

<mx:AdvancedDataGrid dataProvider="{YourArrayCollection}">
    <mx:columns>
        <mx:AdvancedDataGridColumn id="colQuantity" headerText="Qty" dataField="Quantity"/>
    </mx:columns>
    <mx:rendererProviders>
        <mx:AdvancedDataGridRendererProvider column="{colQuantity}" depth="1" dataField="Quantity" renderer="MyRenderer" />
    </mx:rendererProviders>
</mx:AdvancedDataGrid>

EDIT: I set the backgroundColor in a function so that when the itemRenderers get recycled the function will get called and set the backgroundColor to the correct value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文