首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展DataGridColumn并指定paddingLeft

扩展DataGridColumn并指定paddingLeft
EN

Stack Overflow用户
提问于 2010-11-22 13:06:50
回答 1查看 1.7K关注 0票数 0

我正在尝试扩展DataGridColumn,在扩展类中,尝试

为paddingLeft指定一个值,但我无法编译它。

使用Flex Builder 3:

mainApp.mxml:

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
<?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

EN

回答 1

Stack Overflow用户

发布于 2010-11-23 09:19:06

您不需要扩展DataGridColumn来更改填充,而且正如您已经注意到的那样,在DataGridColumnExt中设置样式paddingLeft不起作用。我猜它不起作用,因为DataGridColumn只是作为样式的代理。列的项呈现器从列派生其样式。因此,您有几个选项可以完成您想要做的事情(请参阅下面的示例):

  1. 使用mx:DataGridColumn并在其上设置所需的样式(如paddingLeft )。列的项目呈现器将使用填充(请参阅我的example).
  2. Create中的“列1”-您自己的项目呈现器(您可以扩展mx:DataGridItemRenderer,直接在项目呈现器中设置样式,并相应地设置列的itemRenderer属性)。如果您经常需要使用具有相同样式的同一列,那么在自定义列中创建自己的DataGridColumn和设置itemRenderer (见我的示例中的“第3列”)是有意义的。

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGridItemRenderer xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="20">
</mx:DataGridItemRenderer>

DataGridColumnExt.as

代码语言:javascript
复制
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);
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4245689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档