1

これは少し...奇妙です。基本的に、ASP.NET Dynamic Dataを使用して作成しているフォームがあります。これは、いくつかのカスタムフィールドテンプレートを利用します。

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

Eval()、XPath()、Bind()などのデータバインディングメソッドは、データバインディングコントロールのコンテキストでのみ使用できます

子オブジェクトを取得するために、LinqDataSourceOnSelectedイベントのRow変数にアクセスしています...

ここで、奇妙な部分について説明します。フィールドを少し並べ替えると、問題の原因となっているフィールドが2回ロードされなくなります。

何かご意見は?

編集:Page_Loadが最初のロードで呼び出されることに気づきました(行を使用しようとするとRowが例外をスローしたとき)が、2回目は呼び出されません。それが何か助けになるなら...

今は例外をキャッチして無視するだけで管理していますが、本当の原因がわからないと壊れてしまうのではないかと少し心配しています。

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

4

2 に答える 2

0

Page_Loadで設定されているものを指しているのでOnSelectedはありませんか?行オブジェクトのようなもの。OnSelectedはポストバックイベントであり、の後に発生しPage_Loadます。行の準備ができていないときに例外が発生する可能性があると私が考えることができるのはそれだけです。

于 2009-06-17T16:46:44.343 に答える
0

すべてがコメント化されるか、コントロールが 2 回読み込まれなくなるまで、コード ビハインドでコメントアウトを開始します。

まだ実行中の場合は、コントロール自体のフックを外し始めます。最終的には、実際の問題に到達します。

于 2009-06-18T19:17:59.670 に答える