2012-01-31 10 views
3

私は一般的な質問があります。私のページにはいくつかの静かな「重い」UserControlがあり、それぞれがMultiView Viewに配置されています。 PageLoadでは、これらの各コントロールが初期化され、不要なデータベース呼び出しが発生します。私が望むのは、Viewが 'Active'に設定されているコントロールだけをロードすることです。今私は、データをバインドするかどうかを設定するために、これらのユーザーコントロールのそれぞれにpublic booleanプロパティを使用しますが、これを行う一般的な方法はありますか?ページロード時にUserControlsをロードしない最良の方法は何ですか?

+0

パブリック関数 'DataBind'を提供し、ユーザーコントロールが表示されるときに、ページからのことを呼んでいます。一般的に、UserControlのPage_Loadでは何もしないでください。 –

答えて

0

これは、各コントロールは、データバインディングのためのメソッドを実装(あなたのソリューションと同様に)私はそれを行う方法

です。このメソッドは、表示されているビューが 'アクティブ'の場合にのみ呼び出されます。 (あなたが既にサーバサイドでやっているように)。 これらの各コントロールには、コードビハインドからHTMLをレンダリングするリテラルのみが含まれています。

私はまた、よりクリーンな方法を持ちたいと思いますが、コントロールはOnLoadなどのメソッドが呼び出されていても表示されません。私の知るところでは、このようなデータ結合操作を実行するか、またはプロパティの値を手動で設定する必要があります。

DataBindメソッドをオーバーライドしないでください。コントロール自体がVisibleプロパティをfalseに設定していても呼び出されるためです。 (これは私が覚えている方法ですが、確認するだけで確認できます)。よりクリーンな方法は、オーバーライドされたDataBindメソッドでプロパティをチェックし、trueに設定されている場合にのみデータバインドを実行することでしょうか。

関連する問題