1

いくつかのカスタム コンポーネントを使用して Flex アプリケーションを構築していますが、これが問題を引き起こしていると思います。ここでの回答をテンプレートとしてsortByColumn使用して、スパークデータグリッドに入れようとしています。関数で次を使用しようとすると、

myGrid.sortByColumns(0,true);

エラーが発生します:

1061: Call to a possibly undefined method sortByColumns through a 
reference with static type com.components:MyReportGrid.

このエラーを削除する方法を知っている人はいますか? MyReportGridspark コンポーネントの正しい位置を何らかの方法でマスキングしていますか? また、invalidateCell() などの他の関数を使用すると、「未定義のメソッド」エラーが発生しますが、このエラーに関連しているかどうかはわかりません。

私のデータグリッドは次のようになります:

...
<components:MyReportGrid id="myGrid" dataProvider="{_myData}"...>
    <components:columns>
        <fx:Array>
            <supportClasses:MyColumn ... />
            <supportClasses:MyColumn ... />
            <supportClasses:MyColumn ... />
            ...

ここで、MyColumn は次のようなクラスです。

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

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>
4

2 に答える 2

5

基本タイプのコンポーネントを呼び出しmyGrid.sortByColumns(0,true);ているため、これは機能しません。MyReportGridGroup

AGroupには呼び出されたメソッドがありません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>
    
于 2012-05-09T07:42:05.333 に答える
1

うーん、ビルド スクリプトや階層を含め、コードを完全なコンテキストで見ないと、適切な応答を返すのはちょっと難しいです。ただし、私が知る限り、MyReportGrid がどのようなオブジェクトであるかに関する情報がコンパイラに不足しているようです。その機能を持つものを拡張しますか、それとも関数「sortByColumns」を実装しますか?

「型ヒント」から逃れる方法を探している場合は、いつでも「myGrid["sortByColumns"](0, true)」を実行できます。

ただし、それはお勧めしません;)

ところで、あなたの説明では、あなたは MyDataGrid について何かを書いていましたが、それがタイプミスであることに気付くまで、しばらくの間、私はそれを失っていました。

クラス「com.components:MyReportGrid」がその機能を直接または拡張機能を介して実装していることを明確にする必要があると確信しています。

于 2012-05-09T07:36:02.697 に答える