Actionscript 3 Flex DataGrid Spark HeaderRenderer排序图标
我试图在我的DataGrid中为我的一列设置一个图标。我初始化了DataGrid,并将列如下所示:Actionscript 3 Flex DataGrid Spark HeaderRenderer排序图标,actionscript-3,flash,apache-flex,flex-spark,Actionscript 3,Flash,Apache Flex,Flex Spark,我试图在我的DataGrid中为我的一列设置一个图标。我初始化了DataGrid,并将列如下所示: <s:GridColumn dataField="Test" itemRenderer="ColorGradientItemRenderer" sortCompareFunction="numeric_sort('Test')"> <s:headerRenderer> <fx:Compon
<s:GridColumn dataField="Test"
itemRenderer="ColorGradientItemRenderer"
sortCompareFunction="numeric_sort('Test')">
<s:headerRenderer>
<fx:Component>
<s:DefaultGridHeaderRenderer chromeColor="0xFFFFFF">
<s:Image source="@Embed('img/test.jpg')" width="75" height="75" />
</s:DefaultGridHeaderRenderer>
</fx:Component>
</s:headerRenderer>
</s:GridColumn>
我在标题上看到图像,问题是当我单击图像进行排序时,指示排序方向的小箭头没有显示。我怎样才能让它出现?如果我可以在这里内联插入一些mxml,而不必创建多个mxml渲染器文件,那就太好了。您需要在自定义标题外观中对defaultSortIndicator进行外观设计。查看此问题:您可以使用datagrid的sortByColumns方法,或者扩展datagrid并将此方法添加到其中:
public function PlaceSortIndicator(columnIndex:uint, descending:Boolean):void
{
if(columnIndex >= 0 && columns != null && columns.length > columnIndex)
{
var column:GridColumn = columns.getItemAt(columnIndex) as GridColumn;
if(column != null)
{
column.sortDescending = descending;
if (columnHeaderGroup)
columnHeaderGroup.visibleSortIndicatorIndices = new <int>[columnIndex];
}
}
}
公共函数PlaceSortIndicator(columnIndex:uint,descending:Boolean):void
{
如果(columnIndex>=0&&columns!=null&&columns.length>columnIndex)
{
var column:GridColumn=columns.getItemAt(columnIndex)作为GridColumn;
if(列!=null)
{
column.sortDescending=递减;
if(columnHeaderGroup)
columnHeaderGroup.VisibleSortIndicationIndications=新建[columnIndex];
}
}
}
既然您正在创建一个定制的headerRenderer,我想就由您来实现这个小箭头。由于您正在扩展DefaultGridHeaderRenderer,我怀疑您的图像掩盖了箭头。我猜,但我打赌如果在渲染器上使用creationComplete,并使用setChildIndex将图像设置为索引0;箭头将会出现。不是很优雅,但可能是功能性的。我试着改变深度,但实际上没有效果。还尝试将图像向左移动并按字母顺序向下-箭头未显示。奇怪的是,它好像超过了箭头。我最终为渲染器创建了新文件。。。有点烦人,但你能做什么