Custom Spark DataGrid中未定义的方法"sortByColumns"?

ggk*_*ath 1 apache-flex actionscript actionscript-3 flex4

我正在使用一些自定义组件构建Flex应用程序,我认为这些组件正在搞乱.我正在尝试sortByColumn在火花数据网格中,使用此处答案作为模板.当我尝试在函数中使用以下内容时,

myGrid.sortByColumns(0,true);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

1061: Call to a possibly undefined method sortByColumns through a 
reference with static type com.components:MyReportGrid.
Run Code Online (Sandbox Code Playgroud)

有谁知道如何删除此错误?被MyReportGrid莫名其妙地掩盖了Spark组件的正确位置?当使用其他一些函数时,我也会得到"未定义的方法"错误,例如invalidateCell(),不确定它是否与此错误有关.

我的数据网格如下:

...
<components:MyReportGrid id="myGrid" dataProvider="{_myData}"...>
    <components:columns>
        <fx:Array>
            <supportClasses:MyColumn ... />
            <supportClasses:MyColumn ... />
            <supportClasses:MyColumn ... />
            ...
Run Code Online (Sandbox Code Playgroud)

其中MyColumn是一个类,如下所示:

import spark.components.gridClasses.GridColumn;
public class MyColumn extends GridColumn
{
    ...
    public function MyColumn(headerText:String="header" width:Number=100 ...)
    {
       this.headerText=headerText;
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

和MyReportGrid是:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"    
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"
         width="400" height="300">
   import com.components.myClasses.MyColumn;
   import com.itemRenderers.myItemRenderer;
   import mx.collections.ArrayCollection;
   import mx.collections.ArrayList;
   import mx.collections.ListCollectionView;
   import spark.components.gridClasses.GridColumn;
   ...
   <s:DataGrid width="100%" ... />
</s:Group>
Run Code Online (Sandbox Code Playgroud)

Den*_*ann 5

因为你在呼唤这行不通myGrid.sortByColumns(0,true);您的MyReportGrid组分,它是基本类型Group.

A Group没有任何方法调用sortByColumns

所以你可以:

  • 在MyReportGrid组件中创建委托方法

    <?xml version="1.0" encoding="utf-8"?>
    <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"    
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"
     width="400" height="300">
      import com.components.myClasses.MyColumn;
      import com.itemRenderers.myItemRenderer;
      import mx.collections.ArrayCollection;
      import mx.collections.ArrayList;
      import mx.collections.ListCollectionView;
      import spark.components.gridClasses.GridColumn;
      ...
    
       <mx:Script>
         <![CDATA[
         public function sortByColumns(columnIndices:Vector.<int>, isInteractive:Boolean = false):Boolean{
             return internalGroupGrid.sortByColumns(columnIndices,isInteractive);
         }
         ]]>
       </mx:Script>
    
       <s:DataGrid width="100%" id="internalGroupGrid"... />
    </s:Group>
    
    Run Code Online (Sandbox Code Playgroud)
  • 使DataGrid成为MyReportGrid组件的根标记

    <?xml version="1.0" encoding="utf-8"?>
    <s:DataGrid xmlns:fx="http://ns.adobe.com/mxml/2009"    
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:mx="library://ns.adobe.com/flex/mx"
             width="400" height="300">
        import com.components.myClasses.MyColumn;
        import com.itemRenderers.myItemRenderer;
        import mx.collections.ArrayCollection;
        import mx.collections.ArrayList;
        import mx.collections.ListCollectionView;
        import spark.components.gridClasses.GridColumn;
        ...
    </s:DataGrid>
    
    Run Code Online (Sandbox Code Playgroud)