我正在尝试扩展DataGridColumn,在扩展类中,尝试
为paddingLeft指定一个值,但我无法编译它。
使用Flex Builder 3:
mainApp.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<mx:DataGrid x="191" y="171">
<mx:columns>
<local:DataGridColumnExt headerText="Column 1" dataField="col1"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>DataGridColumnExt.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGridColumn xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="10">
</mx:DataGridColumn>我得到的错误:
通过带有静态类型styleDeclaration的引用访问可能未定义的属性DataGridColumnExt。生成的代码(使用-keep保存):路径: DataGridColumnExt-generated.as,行: 68,列: 13 DataGridColumnWithLeftPadding未知1290353024334 24677
发布于 2010-11-23 09:19:06
您不需要扩展DataGridColumn来更改填充,而且正如您已经注意到的那样,在DataGridColumnExt中设置样式paddingLeft不起作用。我猜它不起作用,因为DataGridColumn只是作为样式的代理。列的项呈现器从列派生其样式。因此,您有几个选项可以完成您想要做的事情(请参阅下面的示例):
mx:DataGridColumn并在其上设置所需的样式(如paddingLeft )。列的项目呈现器将使用填充(请参阅我的example).mx:DataGridItemRenderer,直接在项目呈现器中设置样式,并相应地设置列的itemRenderer属性)。如果您经常需要使用具有相同样式的同一列,那么在自定义列中创建自己的DataGridColumn和设置itemRenderer (见我的示例中的“第3列”)是有意义的。<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<mx:DataGrid x="191" y="171" dataProvider="{[{value: 'foo'}, {value : 'bar'}]}">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="value" paddingLeft="20"/>
<mx:DataGridColumn headerText="Column 2" dataField="value" itemRenderer="ItemRendererWithPadding"/>
<local:DataGridColumnExt headerText="Column 3" dataField="value"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>ItemRendererWithPadding.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGridItemRenderer xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="20">
</mx:DataGridItemRenderer>DataGridColumnExt.as
package
{
import mx.controls.dataGridClasses.DataGridColumn;
import mx.core.ClassFactory;
public class DataGridColumnExt extends DataGridColumn
{
public function DataGridColumnExt(columnName:String = null)
{
super(columnName);
itemRenderer = new ClassFactory(ItemRendererWithPadding);
}
}
}https://stackoverflow.com/questions/4245689
复制相似问题