虽然这听起来像是一项简单的任务,但我无法找到解决方案。我有一个没有定义列但有一个ItemRenderer的DataGrid (在DataGrid本身上)。我希望数据网格在向其中填充数据时使用此ItemRenderer。
<mx:DataGrid id="dataGrid" height="100%" width="100%" itemRenderer="my.renderer" />通过查看DataGrid代码,它看起来应该只针对预定义的列。我发现的唯一解决办法是在填充dataProvider之后分配itemRenderer (这会自动创建列)
发布于 2013-11-13 00:49:15
ItemRenderer是在一个列上定义的,而不是在DataGrid上定义的,所以我认为您的代码会抛出一个编译器错误。
itemRenderer是一个属性,因此不能在DataGridColumn上使用CSS设置它。
但是,MX DataGrid确实有一个样式名称defaultDataGridItemRenderer,它应该传递给GridColumns。您应该能够在CSS中设置它,并使用它来定义每一列的默认itemRenderer。
当您最终拥有一个dataProvider时,您还可以在ActionScript中手动创建列,并以这种方式设置每个列上的itemRenderer。
在发现defaultDataGridItemRenderer样式之前,我最初的建议是说可以扩展DataGridColumn类来设置默认的itemRenderer值。但是,在您提供的代码示例中,您没有手动定义列;因此,您还必须扩展DataGrid才能使用您的自定义列类。
发布于 2013-11-15 10:47:02
itemRenderer属性为ListBase(DataGrid extend )
如果您将DataGrid.itemRenderer=设置为“mx.controls.TextInput”,并且您尚未设置列的值,那么DataGrid将使用TextInput来创建项目渲染器和标题渲染器。
这是DataGrid的源代码
public function createColumnItemRenderer(c:DataGridColumn, forHeader:Boolean, data:Object):IListItemRenderer
{
var factory:IFactory;
// get the factory for the data
factory = c.getItemRendererFactory(forHeader, data);
if (!factory)
{
if (!data)
factory = nullItemRenderer;
if (!factory)
factory = itemRenderer;
}https://stackoverflow.com/questions/19932758
复制相似问题