1
我有一個名爲viewBase的視圖組件,其中我定義了一個高級數據網格,併爲datagrid列定義了少量項呈示器。現在我有一個需求,我需要使用相同的視圖viewBase組件,但不需要使用任何項目渲染器。如何爲數據網格組件動態重寫列項呈示器
任何人都可以告訴我如何重寫在視圖組件中聲明的itemrenderer?
我有一個名爲viewBase的視圖組件,其中我定義了一個高級數據網格,併爲datagrid列定義了少量項呈示器。現在我有一個需求,我需要使用相同的視圖viewBase組件,但不需要使用任何項目渲染器。如何爲數據網格組件動態重寫列項呈示器
任何人都可以告訴我如何重寫在視圖組件中聲明的itemrenderer?
如果你有一個組件ViewBase與AdvancedDataGrid,而你只需要進行動態渲染器之一,你可以做水木清華就像下面的例子(渲染threatLevel是動態的): mx:Script>
import mx.collections.ArrayCollection;
import mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer;
[Bindable]
public var monitoringArrayCollection : ArrayCollection;
[Bindable]
public var threatRendererClass : Class = AdvancedDataGridItemRenderer;
/mx:Script>
<mx:AdvancedDataGrid dataProvider="{monitoringArrayCollection}">
<mx:columns>
<mx:AdvancedDataGridColumn dataField="firstName" />
<mx:AdvancedDataGridColumn dataField="lastName" />
<mx:AdvancedDataGridColumn dataField="threatLevel" itemRenderer="{new ClassFactory(threatRendererClass)}" />
</mx:columns>
</mx:AdvancedDataGrid>
然後,與不同的渲染器這樣的部件的使用的示例可以是如下:
<mx:VBox>
<components:ViewBase />
<components:ViewBase threatRendererClass="{ThreatRenderer}" />
</mx:VBox>
凡ThreatRenderer
是定製渲染器,例如:
public class ThreatRenderer extends UIComponent implements IDataRenderer, IListItemRenderer
{
private var _data : Object;
private var _dataChanged : Boolean = false;
public function get data():Object
{
return _data;
}
public function set data(value:Object):void
{
_data = value;
_dataChanged = true;
invalidateDisplayList();
}
protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if (!_dataChanged || !data) return;
var g : Graphics = this.graphics;
g.clear();
g.beginFill(0xFF0000, 1);
g.drawRect(0, 0, unscaledWidth*Number(data.threatLevel)/100, unscaledHeight);
_dataChanged = false;
}
}
我們可以看看代碼嗎? – 2011-02-24 21:03:29
我不明白你在問什麼。代碼可以幫助我們理解。 itemRenderer是DataGrid Column上的一個屬性,因此您可以重寫它以執行其他操作。但是,itemRenderer也可以引用用於創建DataGrid列的組件,在這種情況下,您不會覆蓋它 - 但可以擴展它。 – JeffryHouser 2011-02-24 21:09:50