2013-05-26 84 views
0

我想在我的DataGrid中有一个图标。我初始化DataGrid和放列像这样:Flex DataGrid Spark HeaderRenderer排序图标

<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渲染器文件来执行此操作,那将是非常好的。

+0

因为要创建一个自定义的HeaderRenderer我认为这将是由你来实施小箭头。既然你在扩展DefaultGridHeaderRenderer,我怀疑你的图像是遮住了箭头。我猜,但我敢打赌,如果您使用渲染器上的creationComplete并使用setChildIndex将图像设置为索引0;箭头就会出现。不优雅,但可能功能。 – JeffryHouser

+0

我试着改变实际的深度,没有奏效。还尝试将图像方式移动到左侧并将其缩小 - 箭头未显示。这很奇怪,就像它超越了箭头。我最终为渲染器创建了新文件......有点烦人,但你能做什么 – K2xL

回答

0

可以使用DataGrid的sortByColumns方法或扩展数据网格,并添加这个方法吧:

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]; 
     } 
    } 
}