Flex DataGrid 标题列分隔符

Posted

技术标签:

【中文标题】Flex DataGrid 标题列分隔符【英文标题】:Flex DataGrid Header Column Separator 【发布时间】:2015-07-06 09:49:35 【问题描述】:

我正在使用 mx:DataGrid(在 Halo 主题中),并且在 标题 列分隔符/垂直网格线颜色方面存在一些问题。有谁知道如何自定义/更改线条颜色?

谢谢!

--萌

【问题讨论】:

【参考方案1】:

Datagrid 有两种样式 horizontalSeparatorSkin 和 verticalSeparatorSkin 样式,您可以覆盖它们。看来您需要覆盖后者。

<mx:DataGrid id="grid" verticalGridLines="true" verticalSeparatorSkin="VerticalSeparatorSkin">
        <mx:columns>
            <mx:DataGridColumn dataField="lbl" />
            <mx:DataGridColumn dataField="val"/>
        </mx:columns>
    </mx:DataGrid>

现在你可以把这个类写成:

public class VerticalSeparatorSkin extends ProgrammaticSkin
    
        public function VerticalSeparatorSkin()
        
            super();
        

        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        
            // draw a line at the bottom of the rectangle defined by
            // unscaledWidth and unscaledHeight
            var g:Graphics = this.graphics;
            g.clear();
            g.lineStyle(3, 0x00FF00); // change thickness / color here
            g.moveTo(0,unscaledWidth);
            g.lineTo(unscaledWidth, unscaledHeight);
        
    

这应该可以完成工作。另一种选择是自定义数据网格本身。

public class MyCustomGrid extends DataGrid
    
        public function MyCustomGrid()
        
            super();
        

        override protected function drawVerticalLine(s:Sprite, colIndex:int, color:uint, x:Number):void
        
            var contentHolder:ListBaseContentHolder = s.parent.parent as ListBaseContentHolder;
            var g:Graphics = s.graphics;
            g.lineStyle(3, color); // change the thickness here
            g.moveTo(x, 0);
            g.lineTo(x, contentHolder.height);
        
    

然后可以使用它来代替常规的DataGrid

【讨论】:

感谢您的帮助!!

以上是关于Flex DataGrid 标题列分隔符的主要内容,如果未能解决你的问题,请参考以下文章

在 Flex DataGrid 中显示复选框列

Flex 4.5 MenuBar 垂直分隔符(使用 updateDisplayList)

在 FLEX 中动态改变 Datagrid 列的宽度

大家好,请问Flex4.5 的DataGrid怎么才能交换列的位置(拖动) spark.components.DataGrid

我如何知道何时单击了 Flex DataGrid itemRenderer 中的按钮?

在应用程序的 creationComplete (Flex 4.5) 上设置 Spark DataGrid 列的默认排序