Actionscript 3 自定义Spark数据网格中未定义的方法“sortByColumns”?

Actionscript 3 自定义Spark数据网格中未定义的方法“sortByColumns”?,actionscript-3,apache-flex,actionscript,flex4,Actionscript 3,Apache Flex,Actionscript,Flex4,我正在使用一些自定义组件构建一个Flex应用程序,我认为这会把事情搞砸。我试图在spark数据网格中对列进行排序,使用作为模板。当我尝试在函数中使用以下内容时 myGrid.sortByColumns(0,true); 我得到一个错误: 1061: Call to a possibly undefined method sortByColumns through a reference with static type com.components:MyReportGrid. 有人知道如何

我正在使用一些自定义组件构建一个Flex应用程序,我认为这会把事情搞砸。我试图在spark数据网格中对列进行排序,使用作为模板。当我尝试在函数中使用以下内容时

myGrid.sortByColumns(0,true);
我得到一个错误:

1061: Call to a possibly undefined method sortByColumns through a 
reference with static type com.components:MyReportGrid.
有人知道如何删除此错误吗?MyReportGrid是否以某种方式掩盖了火花组件的正确位置?在使用一些其他函数(如invalidateCell)时,我也会遇到未定义的方法错误,不确定它是否与此错误相关

我的数据网格看起来像:

...
<components:MyReportGrid id="myGrid" dataProvider="{_myData}"...>
    <components:columns>
        <fx:Array>
            <supportClasses:MyColumn ... />
            <supportClasses:MyColumn ... />
            <supportClasses:MyColumn ... />
            ...
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>

嗯,如果不在完整的上下文中查看代码(包括构建脚本和层次结构),就很难给出好的响应。然而,据我所知,编译器似乎缺少关于MyReportGrid是什么类型的对象的信息。它是否扩展了具有该功能的内容,还是实现了sortByColumns函数

如果你正在寻找一种摆脱打字暗示的方法,你可以一直这样做 myGrid[sortByColumns]0,true

但是,不建议这样做

顺便说一句,在你的调查中,你写了一些关于MyDataGrid的东西,这让我有点迷路了,直到我意识到这是一个打字错误


我非常确定,您必须明确,您的类com.components:MyReportGrid直接或通过扩展实现了该功能。

hmmm,如果不在完整的上下文(包括构建脚本和层次结构)中查看代码,就很难给出好的响应。然而,据我所知,编译器似乎缺少关于MyReportGrid是什么类型的对象的信息。它是否扩展了具有该功能的内容,还是实现了sortByColumns函数

如果你正在寻找一种摆脱打字暗示的方法,你可以一直这样做 myGrid[sortByColumns]0,true

但是,不建议这样做

顺便说一句,在你的调查中,你写了一些关于MyDataGrid的东西,这让我有点迷路了,直到我意识到这是一个打字错误


我非常确定,您必须明确您的类com.components:MyReportGrid直接或通过扩展实现该函数。

这永远不会起作用,因为您正在调用myGrid.sortByColumns0,true;在基类型组的MyReportGrid组件上

组没有任何名为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>
使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>

这永远不会起作用,因为您正在调用myGrid.sortByColumns0,true;在基类型组的MyReportGrid组件上

组没有任何名为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>
使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>

第一个解决方案中sortByColumns的返回类型是否应为空?还有,是myGrid.sortByColumns。。。;打字错误?它应该仅仅是肮脏的专栏。。。;在第一个解决方案中?更改了返回类型的示例。在应用程序中嵌入MyReportGrid的任何地方,都应该调用myGrid.sortByColumns;在本例中,我们只是创建一个占位符方法,该方法将MyReportGrid上的调用委托给它包含的DataGrid。第一个解决方案中sortByColumns的返回类型是否应为void?还有,是myGrid.sortByColumns。。。;打字错误?它应该仅仅是肮脏的专栏。。。;在第一个解决方案中?更改了返回类型的示例。在应用程序中嵌入MyReportGrid的任何地方,都应该调用myGrid.sortByColumns;在本例中,我们只是创建一个占位符方法,该方法将对MyReportGrid的调用委托给它所包含的DataGrid。