惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

博客园 - LutzMark

charles4抓https请求的注意事项,补充iphone7(ios10系统)无法解密ssl问题 XCode设置自己windows习惯的快捷键(比如Home、End键) MVC项目中ExecutionTimeout不生效的解决方案 Delegate与Event的区别 坑爹的MSN登录错误80072745 Linq的sum函数InvalidOperationException异常解决办法 LINQ to SQL自定义映射表关系(1:N or 1:1) LINQ to SQL 外键约束的插入及获取主表标识列等问题 Flex中的 for in 与 for each in - LutzMark Flex的DataGrid将水平分隔线设为虚线 - LutzMark - 博客园 去除ColumnChart自带的阴影效果 - LutzMark - 博客园 IIS7中配置WebOrb支持RTMPT 使用DataAdpater自动批量更新DataSet中的数据到数据库 委托的Invoke 和 BeginInvoke 与Control的Invoke和BeginInvoke(转-因为写得很好) 控制台测试异步委托 一篇好文,以在迷茫时阅读 驳《IT开发工程师的悲哀》 钢板与表针 不用临时变量,只用11个字符交换两个变量的值——窥视C#编译原理的冰山一角
解决Flex的DataGrid控件中ItemRender随Scrollbar的滚动发生UI重绘问题 - LutzMark - 博客园
LutzMark · 2010-02-21 · via 博客园 - LutzMark

今天上午做一个复杂的DataGrid,其中几列是用ItemRender动态绘制按钮,遇到一个问题:DataGrid的第一行和最后一行的UI显示会随着DataGrid的Scollbar移动,而数据都正常。估计是Scollbar移动引起UI重绘,调试了好久也没解决。下午偶然间发现属性liveScrolling,试了一下搞定!

<mx:DataGrid
      left="3" right="3"
      alternatingItemColors="#FFFFFF"
      textRollOverColor="#6E6E70"
      rollOverColor="#F0F3F9"
      height="738"
      rowHeight="80"
      wordWrap="true"     
      headerHeight="0"
      top="144"
      id="dgTeam"
      fontWeight="bold"
      horizontalGridLines="true"
      borderThickness="0"
      color="#B3B4B7"
      variableRowHeight="true"
      paddingTop="8"
      paddingBottom="8"
      sortableColumns="true" dataProvider="{mockTeamData}" horizontalSeparatorSkin="{DashLine}"  verticalGridLineColor="#9e9fa3"    liveScrolling="false">
  
   <mx:columns>
    <mx:DataGridColumn headerText="Team Members"
           width="140"
           fontSize="12" dataField="name">
     <mx:itemRenderer>
      <mx:Component>
       <mx:Canvas creationComplete="init()">

        <mx:Script>
         <![CDATA[
          import mx.controls.Label;
          private var l:Label;
          private function init():void
          {
           l=new Label();
           l.x=10;
           l.text=data.name;
           l.addEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
           l.addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);                        
           this.addChild(l);
          }
          
          private function onMouseOver(event:MouseEvent):void
          {
           l.setStyle("textDecoration","underline");
           l.setStyle("color","0x6E6E70");
          }
          private function onMouseOut(event:MouseEvent):void
          {
           l.setStyle("textDecoration","none");
           l.setStyle("color","0xB3B4B7");
          }
          
         ]]>
        </mx:Script>
       </mx:Canvas>
      </mx:Component>
     </mx:itemRenderer>
    </mx:DataGridColumn>
    <mx:DataGridColumn headerText="Not Started"
           id="status1"
           resizable="true"
        
           width="220"
           fontSize="9"
           color="#838487">
     <mx:itemRenderer>
      <mx:Component>
       <mx:Canvas creationComplete="{TeamColumnFormatter.InitRender(data.status1,data.name,this);}" >

        <mx:Script>
         <![CDATA[
          import mx.controls.Alert;
          
          import com.view.Team.TeamColumnFormatter;
    
         ]]>
        </mx:Script>
       </mx:Canvas>
      </mx:Component>
     </mx:itemRenderer>

    </mx:DataGridColumn>
    <mx:DataGridColumn headerText="In Progress"
        
           width="220"
           fontSize="9"
           color="#838487">
     <mx:itemRenderer>
      <mx:Component>
       <mx:Canvas creationComplete="TeamColumnFormatter.InitRender(data.status2,data.name,this);">
        <mx:Script>
         <![CDATA[
          import com.view.Team.TeamColumnFormatter;
         ]]>
        </mx:Script>
       </mx:Canvas>
      </mx:Component>
     </mx:itemRenderer>
    </mx:DataGridColumn>
    <mx:DataGridColumn headerText="Submitted"
         
           width="220"
           fontSize="9"
           color="#838487">
     <mx:itemRenderer>
      <mx:Component>
       <mx:Canvas creationComplete="TeamColumnFormatter.InitRender(data.status3,data.name,this)">
        <mx:Script>
         <![CDATA[
          import com.view.Team.TeamColumnFormatter;
         ]]>
        </mx:Script>
       </mx:Canvas>
      </mx:Component>
     </mx:itemRenderer>

    </mx:DataGridColumn>
    <mx:DataGridColumn headerText="Complete"
        
           width="220"
           fontSize="9"
           color="#838487">
     <mx:itemRenderer>
      <mx:Component>
       <mx:Canvas creationComplete="TeamColumnFormatter.InitRender(data.status4,data.name,this)">
        <mx:Script>
         <![CDATA[
          import com.view.Team.TeamColumnFormatter;
         ]]>
        </mx:Script>
       </mx:Canvas>
      </mx:Component>
     </mx:itemRenderer>

    </mx:DataGridColumn>

   </mx:columns>
  </mx:DataGrid>

TeamColumnFormatter.as:

package com.view.Team
{
 public class TeamColumnFormatter
 {
  import mx.controls.Alert;
  import com.view.Team.ColumnSquareButton;
  import flash.events.MouseEvent;

  public static function InitRender(customData:Object,nameData:Object, target:Object):void
  {
   var _x:uint=8;
   for (var i:uint=0; i < customData.length; i++)
   {
    var btn:ColumnSquareButton=new ColumnSquareButton();

    if (i < 6)
    {
     btn.x=_x;
     _x+=36;
    }
    else
    {
     if (i % 6 == 0)
     {
      _x=8;
     }

     btn.x=_x;
     _x+=36;
     btn.y=36 * Math.floor(i / 6);
    }

    btn.Label=customData[i].toString();
    btn.Name=nameData.toString();
    btn.addEventListener(MouseEvent.CLICK, onclick);
    target.addChild(btn);

   }
  }

  public static function onclick(event:MouseEvent):void
  {
   Alert.show("Redirect to "+event.currentTarget.Name + "'s assigned page:" + event.currentTarget.Label);
  }
 }
}