Adobe Flex:エラー#1034がDataGrid入力を検証しようとしています

私のデータグリッドの入力を検証しようとすると、私は関数を使用しています(Adobeの例から取得)。

グリッドがどのようになっているかは次のとおりです。

  
   
       
       
   
  

そしてここにAS部分からの機能があります

  public function formatData(event:DataGridEvent):void
  {
     if (event.reason == DataGridEventReason.CANCELLED)
     {
     //Do not update cell.
      return;
     }            

     var newData:String= TextInput(event.currentTarget.itemEditorInstance).text;

    //Determine if the new value is an empty String. 
     if(newData == "")
               {
                        event.preventDefault();
                        TextInput(cashGrid.itemEditorInstance).errorString=
                            "Enter a valid string.";
                        return;
               }
  } 

ソースの例では動作しますが、私の例では、グリッドを編集すると、エラーがポップアップして
TypeError:エラー#1034:強制型変換が失敗しました:mx.controls :: TextInput @ f093c29をspark.components.TextInputに変換できません。

試してみる

import mx.controls.TextInput;  

私に告げる

マルチネーム参照を明確に解決できません。 spark.components.TextInput。

名前空間には混乱がありますが、私はこの作業をどのようにするのか分かりません。
助けて!

ありがとう

1
こんにちはサンカラナラヤナン、申し訳ありません、私は何とかコメントセクションを台無しにしました。 allowForEdit(event)は、特定のフラグをチェックし、それが真であれば編集を禁止する独立した関数です。これは、formatData(event)が存在しない場合には、それ自身で正常に動作します。また、itemEditBeginning = "..."をデータグリッドの定義からすべて削除してもエラーになりますので、alowForEdit()は問題の原因ではありません。あなたがそれがおそらく助けることができると思えば、私はまだそれを追加することができます。ありがとう!
追加された 著者 user1065079,

1 答え

私は与えられたコードでエラーを再現することはできません。それは私の最後にうまくいっている。 allowForEdit(event)のコードも私に送ってください。

どのSDKのバージョンを使用していますか? ルートアプリケーションの名前空間とは何ですか?アプリケーションの名前空間全体を貼り付けてください。

0
追加された
こんにちはフレンドは返信をありがと私はあなたの問題の解決策を見つけました.spx.components.textinputかmx.controls.textinputかどうか、スクリプトの場所でtextinputクラスパッケージを確認してください。mx.controlsの場合はそれを変更し、mxに変更した場合はsparkに変更してください1つは私に結果を知らせる
追加された 著者 Sankaranarayanan,
import mx.controls.TextInput;マルチネーム参照を明白に解決できません。 spark.components.TextInput。スクリプトブロックからimport spark.components.TextInput行を削除します。
追加された 著者 Sankaranarayanan,
Flash Builder 4.5の使用<?xml version = "1.0" encoding = "utf-8"?> ns.adobe.com/mxml/2009" ; xmlns:s = "library://ns.adobe.com/flex/spark" xmlns:mx = "library:// ns。 (イベント:DataGridEvent):void {if(event.dataField == "value");}ここでは、関数allowForEdit(event)のprivate関数allowForEdit {var item:Object =((DataGridとしてのevent.currentTarget).dataProviderをArrayCollectionとして)[event.rowIndex]; if(flagIsFinal == 1){event.preventDefault();}}}
追加された 著者 user1065079,
返信ありがとう、サンカール。私の現在のプログラムは、このビット以外は正常に機能し、テキストインプットのインポートはまったくありません。 import spark.components.TextInputを追加すると、同じランタイムエラー#1034が返されます。 import mx.controlsを追加しています。 TextInputはコンパイル時エラー "Can not resolve ..."を返します。スパークのインポートは自動的に何とかしていますか?私は現在、mx.controlsのDataGrid、Alert、dataGridClasses.DataGridColumnを含みます。 mx.collectionsのArrayCollection。いくつかのmx.events。他のアイデア?再度、感謝します!
追加された 著者 user1065079,
解決済み!ありがとうサンカール、あなたがエラーを再現できないと言ったとき、私はヒントを得た。具体的にTextInputをインポートすることなく、私はコード内のどこかでs:TextInputを使用していました。条件付きでない場合、TextInputは混乱の原因になっていたはずです。私はちょうど以下のように明示的に名前空間を作りました。 var newData:String = mx.controls.TextInput(event.currentTarget.ite&zwnj; mEditorInstance).tex&zwnj; t;ピー!再度、感謝します。
追加された 著者 user1065079,