2009-08-26 70 views
2

我有一個datagrid,其中包含一個datagridcolumn。如果沒有自定義itemrenderer,我可以使用數據提示功能來顯示自定義數據提示,但現在我想擁有一個自定義項目渲染,用於以不同方式對行着色。因此我擴展了一個標籤並更改了數據方法,但現在我的數據提示功能不再有效。DataGrid中Datagrid中的自定義Itemrender

任何想法?

在此先感謝

塞巴斯蒂安

回答

1

我知道這個問題有點古老,但我遇到了同樣的問題,並通過查看標準DataGridItemRenderer類如何解決它。

所以基本上我最終複製該toolTipShowHandler()函數到類(不加任何修改),實現IDropInListItemRenderer接口並添加了幾行到我的渲染器的的commitProperties()函數,這是由爲DataGridItemRenderer啓發,太。

希望這會有所幫助。

-2

只是把我的頭頂部,也許讓你自定義項目渲染延伸的DataGridColumn。這將爲您的項目渲染器提供常規列的所有功能。

+0

的DataGridColumn不擴展UIComponent,甚至的DisplayObject。 – 2009-08-27 15:34:29

+0

啊,是的,這是正確的。嘗試查看DataGridItemRenderer類,在validateProperties方法中有處理數據提示的代碼。您可以在自定義渲染器中實現此功能。 – 2009-08-28 08:16:59

1

複製cbranch給出的鏈接內容。計算器是保持代碼更加可靠使用的itemRenderer

一個有關在使用的DataGridColumn的itemRenderer的不好的事情時,網頁摘要

顯示數據提示的是,你失去的數據提示功能,它通常提供。那麼,這是一種僞造該功能的方法。

首先,像通常那樣將dataTipField或dataTipFunction添加到DataGridColumn。

<mx:DataGridColumn headerText="DataTip" 
     dataField="name1" 
     showDataTips="true" 
     dataTipField="description1" /> 

然後,在您的itemRenderer中添加以下代碼,以便能夠使用該信息並顯示工具提示。

private function getToolTip():String{ 
    var dg:DataGrid = listData.owner as DataGrid; 
    var func:Function = dg.columns[listData.columnIndex].dataTipFunction; 
    if(func != null){ 
      return func.call(this, this.data); 
    }else if(dg.columns[listData.columnIndex].dataTipField.length){ 
      return data[dg.columns[listData.columnIndex].dataTipField]; 
    }else{ 
      return ""; 
    } 
} 

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{ 
    super.updateDisplayList(unscaledWidth, unscaledHeight); 
    this.toolTip = getToolTip(); 
    } 

這工作既dataTipFields和dataTipFunctions,讓你對待數據提示列中的同樣的方式,無論您使用的是的itemRenderer與否。唯一的區別在於標籤的位置,但可以通過樣式輕鬆修改。您可以在這裏下載完整的源代碼,以獲得這個工作原理的功能性示例。

source