CheckDg

    技术2025-07-07  15

    <?xml version="1.0" encoding="utf-8"?>

    <!-- http://blog.flexexamples.com/2010/04/03/creating-a-multiline-spark-checkbox-control-in-flex-4/ -->

    <s:Application name="Spark_CheckBox_skin_maxDisplayedLines_test"

                  xmlns:fx="http://ns.adobe.com/mxml/2009"

                  xmlns:s="library://ns.adobe.com/flex/spark"

                  xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:datagrid="datagrid.*">

        <fx:Script>

           <![CDATA[

               import mx.collections.ArrayCollection;

               [Bindable]

               private var griddata : ArrayCollection = new ArrayCollection(

                  [ {name:"每月支出",order:1, status:"启用", selected:true,imgUrl:"favorites.png", startTime:"2010-12-01",stopTime:"2010-12-01",description:"没有描述"},

                      {name:"每月支出",order:2,  status:"禁用", selected:false,imgUrl:"favorites.png", startTime:"2010-12-01",stopTime:"2010-12-01",description:"没有描述"}

                  ]

               );

     

               protected function ch_clickHandler(event:MouseEvent):void

               {

                  for each(var o : Object in _dataGrid.dataProvider)

                  {

                      o["selected"] = ch.selected;

                  }

                  _dataGrid.invalidateList();

               }

     

           ]]>

        </fx:Script>

        <s:VGroup>

           <s:CheckBox id="ch" click="ch_clickHandler(event)"

                      skinClass="skins.CustomCheckBoxSkin"

                      width="200"

                      />

           <mx:DataGrid id="_dataGrid"  allowDragSelection="true" allowMultipleSelection="true"  dataProvider="{griddata}"

                       width="80%" height="100%" resizableColumns="true"  dragEnabled="true" dropEnabled="true"

                       >

               <mx:columns>

                  <datagrid:CheckBoxHeaderColumn id="dataheader" headerText="选择"

                                              dataField="selected"/>

                  <mx:DataGridColumn headerText="名称" dataField="name" />

                  <mx:DataGridColumn headerText="简称" dataField="simpleName" />

                  <mx:DataGridColumn headerText="状态" dataField="status" />

                  <mx:DataGridColumn headerText="启用时间" dataField="startTime" />

                  <mx:DataGridColumn headerText="停用时间" dataField="stopTime" />

                  <mx:DataGridColumn headerText="描述" dataField="description" />

               </mx:columns>

           </mx:DataGrid>

        </s:VGroup>

       

    </s:Application>

     

     

    package datagrid

    {

        import mx.controls.dataGridClasses.DataGridColumn;

        import mx.core.ClassFactory;

     

        [Event(name="click", type="flash.events.MouseEvent")]

     

        public class CheckBoxHeaderColumn extends DataGridColumn

        {

           public function CheckBoxHeaderColumn(columnName:String=null)

           {

            super(columnName);

    //         headerRenderer = new ClassFactory(CheckBoxHeaderRenderer);

    //         itemRenderer = new ClassFactory(CheckBoxItemRenderer);

               itemRenderer = new ClassFactory(CheckBoxImageItemRenderer);

               headerRenderer = new ClassFactory(CheckBoxImageHeaderRenderer);

           }

           /**is the checkbox selected**/

           public var selected:Boolean = false;

         

        }

    }

     

    CheckBoxImageHeaderRenderer

    <?xml version="1.0" encoding="utf-8"?>

    <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" creationComplete="mxdatagriditemrenderer1_creationCompleteHandler(event)">

     

        <fx:Script>

           <![CDATA[

               import mx.controls.DataGrid;

               import mx.events.FlexEvent;

               private var column:CheckBoxHeaderColumn;

               private var dg:DataGrid;

              

               protected function check_clickHandler(event:MouseEvent):void

               {

                  if (listData)

                  {

                     

                      dg = DataGrid(listData.owner);

                      for each(var o : Object in dg.dataProvider)

                      {

                         o[column.dataField] = check.selected ;

                      }

                      dg.invalidateList();

                  }

               }

     

               protected function mxdatagriditemrenderer1_creationCompleteHandler(event:FlexEvent):void

               {

                  dg = DataGrid(listData.owner);

                 

                  column = dg.columns[listData.columnIndex];

                  column.addEventListener("click", clickHandler);

               }

              

               protected function clickHandler(event:MouseEvent):void

               {

                  var b1 : Boolean = false;

                  var b2 : Boolean = false;

                  for each(var o : Object in dg.dataProvider)

                  {

                      if(o[column.dataField])

                      {

                         b1 = true;

                      }

                      else

                      {

                         b2 = true;

                      }

                  }

                  if(b1 && !b2)

                  {

                      check.selected = true;

                  }else{

                      check.selected = false;

                  }

                 

               }

     

           ]]>

        </fx:Script>

     

        <s:HGroup horizontalCenter="0">

           <s:CheckBox id="check" click="check_clickHandler(event)"/>

           <s:Label id="lblData" top="0" left="0" right="0" bottom="0" text="{dataGridListData.label}" />

        </s:HGroup>

       

    </s:MXDataGridItemRenderer>

     

     

    CheckBoxImageItemRenderer:

    <?xml version="1.0" encoding="utf-8"?>

    <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">

     

        <fx:Script>

           <![CDATA[

               import mx.controls.DataGrid;

               private var column:CheckBoxHeaderColumn;

              

               protected function checkbox1_clickHandler(event:MouseEvent):void

               {

                  data[column.dataField]=  check.selected;

                  column.dispatchEvent(event);

               }

              

               override public function set data(value:Object):void

               {

                  super.data = value;

                  if (listData)

                  {

                      var dg:DataGrid = DataGrid(listData.owner);

                     

                      column = dg.columns[listData.columnIndex];

                      check.selected = data[column.dataField];

                      if(img){

                         img.source = data["imgUrl"];

                      }

                  }

               }

           ]]>

        </fx:Script>

     

        <s:HGroup horizontalCenter="0">

           <s:CheckBox id="check" click="checkbox1_clickHandler(event)"/>

           <mx:Image id="img" />

        </s:HGroup>

       

        <!--<s:Label id="lblData" top="0" left="0" right="0" bottom="0" text="{dataGridListData.label}" />-->

    </s:MXDataGridItemRenderer>

     

    最新回复(0)