Apache flex 扩展DataGridColumn并指定paddingLeft
我尝试扩展DataGridColumn,在扩展类中,尝试Apache flex 扩展DataGridColumn并指定paddingLeft,apache-flex,flash,actionscript-3,mxml,Apache Flex,Flash,Actionscript 3,Mxml,我尝试扩展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
为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>
DataGridColumnText.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGridColumn xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="10">
</mx:DataGridColumn>
我得到的错误:通过静态类型为DataGridColumnText的引用访问可能未定义的属性styleDeclaration。[生成的代码(使用-keep保存):路径:DataGridColumnExt-Generated.as,第68行,第13列]DataGridColumnWithLeftPadding未知1290353024334 24677您不需要扩展
DataGridColumn
来更改填充,正如您已经注意到的那样,在DataGridColumnText
中设置样式paddingLeft
不起作用。我猜它不起作用,因为DataGridColumn
只作为样式的代理。该列的项目渲染器从该列派生其样式。因此,您有几个选项来完成您要做的事情(请参见下面的示例):
mx:DataGridColumn
并在其上设置所需的样式,如paddingLeft
。列的项呈现器将使用填充(请参见我的示例中的“列1”)mx:datagriditemrender
,直接在项目渲染器中设置样式,并相应地设置列的itemrender
属性(请参见我的示例中的“列2”)DataGridColumn
,并在自定义列中设置itemrender
(请参见我的示例中的“第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>
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGridItemRenderer xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="20">
</mx:DataGridItemRenderer>
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);
}
}
}