2009-06-12 4 views
0

これはちょっと...奇妙です。基本的に私は、いくつかのカスタムフィールドテンプレートを利用するASP.NET Dynamic Dataを使用して構築しているフォームを持っています。間違った時刻に動的制御が読み込まれていますか?

FormViewに別のフィールドを追加しました。独自のカスタムテンプレートを使用しています。フォームは明らかな理由のためにそのコントロールを2回ロードしています。さらに悪いことに、最初にテンプレートをロードすると、Rowはまだ準備されておらず、エラーメッセージが表示されます。

Eval()、XPath()、Bind()などのデータバインディングメソッドは、データバインドされたコントロール

子オブジェクトを取得するために、私はLinqDataSourceコントロールOnSelectedイベントでの行の変数にアクセスしてるの文脈...奇妙な部分のために今すぐ

:私はフィールド少しの順序を変更した場合問題の原因となったものがもう2回読み込まれることはありません。

どのような考えですか?

EDIT:最初の読み込み時に(行を使用しようとすると例外がスローされる)、Page_Loadが呼び出されることに気付きましたが、もう一度呼び出されることはありません。それが助けてくれれば...

今は例外をキャッチして無視して管理していますが、実際の原因が見つからなければ、状況が壊れることは少しでも心配です。

EDIT 2:FindControlを再帰的に使用して、ページ上の他のコントロールを見つける問題をトレースしました。どうやらFindControlは、ページライフサイクルイベント(少なくともpage_loadまで)を発生させる可能性があります。これは、そのページが読み込まれる前に発生し、動的データ「stuff」はまだ準備ができていません。

+0

私は思っています、あなたはページ上のformviewとLinqDatasourceへのformviewバインドを持っています。あなたはformviewに移入するいくつかのcustom/additionalフィールドを持っています。 custom/additinalフィールド値????? –

+0

カスタムテンプレートをどのように追加するのか、コードを表示できますか? –

+0

メインページにはFormViewがあり、Dynamic Dataテンプレートには独自のLinqDataSourceを持つFormViewも含まれています。私はカスタムテンプレートを直接追加するのではなく、ASP.NET Dynamic Dataの機能によって追加されています...私はメタデータクラスのUIHintを設定しています...コードは投稿するのが少し複雑ですが、私はおそらく後で今日する必要があります。 – CodeRedick

答えて

0

Page_Loadの何かを指しているのではなく、OnSelectedに設定されていますか?あなたの行オブジェクトのようなもの。 OnSelectedはポストバックイベントで、Page_Loadの後に発生します。それは行が準備ができていないときにあなたの例外を引き起こすかもしれないと私が考えることができる唯一のものです。

+0

いいえ、実際にPage_Loadで実行されていることはありません...私はブレークポイントを設定して何が起きているかを見ることができるので、さらに、Rowオブジェクトは動的データのどこかで生成されます。私のコードのどこにもないので、FieldTemplateが依存しているので、FieldTemplateのロードを試みる前に生成されると思います。 – CodeRedick

0

すべてのコメントが追加されるか、コントロールが2度読み込まれなくなるまで、コード内でコメントを開始します。

まだ実行している場合は、コントロール自体のフックを外してください。最終的には、実際の問題に繋がります。

関連する問題