DataGrid–在列中加CheckBox

來源:互聯網
上載者:User

 一. 在時間軸代碼層

    1.把Button、CheckBox、DataGrid組件加到Libray面板中

    2.在時間軸加以下代碼

      import fl.controls.DataGrid;
      import fl.controls.dataGridClasses.DataGridColumn;
      import fl.data.DataProvider;
      import fl.events.DataGridEvent;
      import fl.controls.Button;

      var dp:DataProvider = new DataProvider();

      dp.addItem({choose:true, title:"image1.jpg"});
      dp.addItem({choose:false, title:"image2.jpg"});
      dp.addItem({choose:true, title:"image3.jpg"});

      var dataGrid:DataGrid = new DataGrid();
      dataGrid.columns = ["choose
","title"];
      dataGrid.columns[0].cellRenderer = DataGridCellRenderer_CheckBox;

      dataGrid.dataProvider = dp;
      dataGrid.rowHeight = 64;
      dataGrid.width = 200;
      dataGrid.rowCount = dp.length ;
      dataGrid.move(10, 10);
      addChild(dataGrid);

      //加一個查看結果的按鈕
      var button:Button = new Button
      addChild(button);
      button.move(90,260);
      button.label = '查看結果';
      button.addEventListener(MouseEvent.CLICK, showResult);
      function showResult(e:Event){
          for(var i:int=0; i<dataGrid.dataProvider.length;i++){
              var rowObj:Object = dataGrid.dataProvider.getItemAt(i);
              trace('choose:'+ rowObj.choose  + ' title:'+rowObj.title );
         }
      }

 

  2.DataGridCellRenderer_CheckBox.as

      package {
          import fl.controls.CheckBox;
          import fl.controls.listClasses.ICellRenderer;
          import fl.controls.listClasses.ListData;
          import flash.events.Event;
          //import fl.core.InvalidationType;
          import flash.events.MouseEvent;

          public class DataGridCellRenderer_CheckBox extends CheckBox implements ICellRenderer {
              private var _listData:ListData;
              private var _data:Object;

              public function DataGridCellRenderer_CheckBox() {
                  super();
                  addEventListener(MouseEvent.CLICK, onCheckClick);
              }
              public function set data(d:Object):void {
                  _data = d;        //d是行對象, 其成員是這一行的每一列的值
                  _selected = _data['choose'];
//賦初值(但每次也會被重新設值,所以在下面使用者選擇變化時,一定要同步更新資料來源)
                 label = '';
             }
             public function get data():Object {
                 return _data;
             }
             public function get listData():ListData {
                  return _listData;
             }
             public function set listData(value:ListData):void {
                  _listData = value;
             }

              override public function get selected():Boolean {
                  return _selected;
              }

              override public function set selected(value:Boolean):void {
              }
              public function onCheckClick(e:MouseEvent) {
                 _selected = !_selected;
                  _data["choose"] = _selected; 
//更新資料來源(要不然,即使做了修改,在set data()時,會把原來的值重新寫回)
              }
          }
      }

 

 3.最終樣式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.