0

データグリッドの特定のセルの背景色を設定する方法。アイテムレンダラーで試してみました。しかし、アイテムレンダラーの問題は、データがデータグリッドに取り込まれていない限り、背景色が機能しないことです。データグリッドにデータがない場合でも、セルまたはセルのセットを強調表示したい。

以下の私のコードを見つけてください:

メイン.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
               creationComplete="onComplete()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import flashx.textLayout.formats.BackgroundColor;

            import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
            private var dataArr:Array=new Array({data1:"Value"},{data1:"Value"},{data1:"Value"},{data1:"Value"},{data1:"Value"},{data1:"Value"})
            private function onComplete():void{
                var colsArr:Array=new Array();
                var column1:AdvancedDataGridColumn=new AdvancedDataGridColumn();
                column1.headerText="Header1";
                //column1.setStyle("backgroundColor","0xcccccc");
                column1.dataField="data1";
                colsArr.push(column1);
                var column2:AdvancedDataGridColumn=new AdvancedDataGridColumn();
                column2.headerText="Header2";
                //column2.setStyle("backgroundColor","0xcccccc");
                column2.dataField="data2";
                colsArr.push(column2);
                var column3:AdvancedDataGridColumn=new AdvancedDataGridColumn();
                column3.headerText="Header3";
                //column3.setStyle("backgroundColor","0xcccccc");
                column3.dataField="data3";
                colsArr.push(column3);
                var column4:AdvancedDataGridColumn=new AdvancedDataGridColumn();
                column4.headerText="Header4";
                //column4.setStyle("backgroundColor","0xcccccc");
                column4.dataField="data4";
                colsArr.push(column4);
                var column5:AdvancedDataGridColumn=new AdvancedDataGridColumn();
                column5.headerText="Header5";
                column5.dataField="data5";
                colsArr.push(column5);
                var column6:AdvancedDataGridColumn=new AdvancedDataGridColumn();
                column6.headerText="Header6";
                column6.dataField="data6";
                colsArr.push(column6);
                var column7:AdvancedDataGridColumn=new AdvancedDataGridColumn();
                column7.headerText="Header7";
                column7.dataField="data7";
                colsArr.push(column7);
                sampleDG.columns=colsArr;
                sampleDG.rowCount=colsArr.length;
            }
            private function myStyleFunction(data:Object, col:AdvancedDataGridColumn):Object{
                if(col.headerText=="Header1" || col.headerText=="Header2" || col.headerText=="Header3"){
                    return {backgroundColor:0xcccccc, color:0xff0000};
                }else{
                    return {backgroundColor:0xffffff, color:0xff0000};
                }
                return {};
            }
        ]]>
    </fx:Script>
    <mx:AdvancedDataGrid id="sampleDG" rowCount="3" width="350" horizontalScrollPolicy="on" height="300"
                         cachePolicy="on"  styleFunction="myStyleFunction" itemRenderer="com.ADGItemRenderer"/>
</s:Application>

ADGItemRenderer:

package com.ssc.pna.secmaster.renderer
{
    import com.ssc.pna.components.MktDGColumn;

    import mx.charts.styles.HaloDefaults;
    import mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer;
    import mx.controls.advancedDataGridClasses.AdvancedDataGridListData;
    import mx.controls.listClasses.BaseListData;
    import mx.styles.CSSStyleDeclaration;
    import mx.styles.IStyleManager2;
    import mx.styles.StyleManager;

    [Style(name="rowColor", type="uint", format="Color", inherit="yes")] 

    public class ADGItemRenderer extends AdvancedDataGridItemRenderer
    {

        /**
         *  @private
         */
        public var dataType:Object; 
        public var precision:Object;
        private static var stylesInited:Boolean = initStyles();

        /**
         *  @private
         */
        private static function initStyles():Boolean
        {
            return true;
        }

        public function ADGItemRenderer()
        {
            super();
            background = true;
            backgroundColor=0xFFFFCC;
        }

        override public function validateNow():void
        {
            //listData=listData;
             var _listDataDummy:BaseListData=listData;


            backgroundColor = 0xFFFFCC;

            super.validateNow();
        }

    }
}

データがない場合でも、最初の3列のすべてのセルの背景色を変更したい(上記のコードで試したように)。最初に SetStyle を使用して列レベルで色を設定しようとしましたが、いくつかの問題に直面しました。そのため、アプローチを変更することを考えました。以下のリンクは、その問題に関する詳細を提供します。

フレックスのデータグリッドを事前に水平にスクロールすると背景色が消える

4

0 に答える 0