在DataGrid上使用itemRenderer时确定拖动代理

时间:2010-07-20 16:43:34

标签: flex datagrid adobe air

我在Flex DataGrid上使用默认的拖放功能,但是,dataGrid本身有一个itemrenderer。 看起来像:

 public class FlashFileDataGridRenderer extends Label{
    public function FlashFileDataGridRenderer(){
      super();
    }
override protected function updateDisplayList (unscaledWidth:Number, unscaledHeight:Number):void {
        super.updateDisplayList(unscaledWidth, unscaledHeight);
    this.setStyle("paddingLeft", "3");
        if (data instanceof FlashEntryBean) {
   if ((data.cutFlag)) {
    setStyle("color", "#AAAAAA");
   }
   else 
    setStyle("color", "#000000");
    }

这适用于datagrid中的所有项目。在拖动时,这不再显示具有较低alpha的代理。我希望能够保留该样式,如何确定此特定项目是否正在应用itemrenderer。我在想如果我能确定对象是否是代理,然后自己淡化文本。

谢谢!

2 个答案:

答案 0 :(得分:0)

不确定您使用的是哪个SDK版本,但在3.5中它确实在拖动代理中保留了浅灰色文本颜色。

答案 1 :(得分:0)

尝试将setStyle调用移动到overriden set data方法

override public function set data(t:Object):void
{
  super.data = t;
  if (data instanceof FlashEntryBean) {
    if (data.cutFlag) 
      setStyle("color", "#AAAAAA");
    else 
      setStyle("color", "#000000");
  }
}