`
aaron0927
  • 浏览: 27699 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex Datagrid中添加自己的组件

阅读更多
需要用到mx:itemRenderer,一般来说有二种方法
1、重写data方法

<mx:itemRenderer>
        <mx:Component>
         <mx:HBox width="100%" horizontalScrollPolicy="off">
          <mx:Script>
           <![CDATA[
            import mx.controls.Button;

            override public function set data(data:Object):void {
             this.removeAllChildren();
             var b1:Button = new Button();
             b1.label = "下载";
             b1.buttonMode = true;
             b1.useHandCursor = true;
             b1.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
              outerDocument.downloadFile(data.url);
             });
             this.addChild(b1);
             if (outerDocument.isEditable) {
              var b2:Button = new Button();
              b2.label = "删除";
              b2.buttonMode = true;
              b2.useHandCursor = true;
              b2.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
               outerDocument.deleteFile(data.url);
              });
              this.addChild(b2);
             }
            }
           ]]>
          </mx:Script>
         </mx:HBox>
        </mx:Component>
       </mx:itemRenderer>

2、利用creationComplete

<mx:itemRenderer>
        <mx:Component>
         <mx:HBox creationComplete="init(data as Object)" width="100%">
          <mx:Script>
           <![CDATA[
            import mx.controls.Button;

            private var url:String;

            private function init(data:Object):void {
             this.url = data.url.toString();
             var b1:Button = new Button();
             b1.label = "下载";
             b1.buttonMode = true;
             b1.useHandCursor = true;
             b1.height = this.height;
             b1.addEventListener(MouseEvent.CLICK, downloadOperationHandler);
             this.addChild(b1);
             if (outerDocument.isEditable) {
              var b2:Button = new Button();
              b2.label = "删除";
              b2.buttonMode = true;
              b2.useHandCursor = true;
              b2.height = this.height;
              b2.addEventListener(MouseEvent.CLICK, deleteOperationHandler);
              this.addChild(b2);
             }
            }
          
            private function downloadOperationHandler(event:MouseEvent):void {
             outerDocument.downloadFile(url);
            }

            private function deleteOperationHandler(event:MouseEvent):void {
             outerDocument.deleteFile(url);
            }
           ]]>
          </mx:Script>
         </mx:HBox>
        </mx:Component>
       </mx:itemRenderer>


上述二种方法,如果datagrid没有排序功能,那都可以用,但如果有排序,就只能用第一种,第二种用引起数据错位
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics