2011-01-12 12 views
1

私はWebユーザーコントロールを持つページを持っていますが、これはかなり重く、アプリケーションユーザーにいくつかの権限がある場合にのみ使用されます。したがって、ユーザが使用できない場合はvisible = falseに設定されます。しかし、この場合は、彼が見えなくてもページにコントロールが追加されます。aspxページにコントロールを追加する方法としない方法はありますか?

問題は、Webユーザーコントロールがまれにしか使用されていないことです。だから、これが必要でないならば、私はコードを含めたくないです。 必要があるときにWebユーザーコントロールを追加するために、事前準備状態を使用する必要があると感じましたが、方法はわかりません。 良いアイデアですか?助けていただきありがとうございます..

+0

あなたはif ... elseステートメントを持っていて、ユーザーがそれを使用する権利がない場合、コントロールを追加しませんか? – CliffC

+0

asp.net-ajaxを使用していますか? –

答えて

3

LoadControlでコードの後ろに追加してください。そのaspxページ上のプレースホルダを配置し、コードからそれをロードし、この

if (something) 
{ 
    Control cnt = Page.LoadControl("UserControl.ascx"); 
    placeHolder1.Controls.Add(cnt); 
} 
+0

良いアイデアありがとう、私はinit、preinit、pageloadでこれを行うのですか? – bAN

+1

OnInit。ポストバック時のViewStateからOnInitでコントロールが復元されるため、ページロードではこの操作を行うことはできません。 OnLoadでこれを行うと、ポストバックのすべての値が失われます – citronas

+0

それは仕事です、asp.netはいくつかの魔法のようです..すべての回答のためのTx – bAN

2

ようにあなたはかなり重いで何を意味するのですか?データバインディングのために時間がかかる場合は、public function(f.e. BindData)を提供する必要があります。これはpage_loadから自動的に呼び出されるのではなく、ページが要求されてユーザーに表示が許可されているときにページから自動的に呼び出されます。

+0

コントロールはポップアップ効果のためにdivをembarks、このdivは多くのデータを含んでいます.. – bAN

+1

この関数では、すべての時間を消費することができるので、コントロールのマークアップだけをasp.netによって登録し、コントロールのviewstateをメンテナンスする必要があります。これがあまりにも大きければ、Antonio Bakulaの答えを試してください。そうしないと、私のソリューションはより簡単になり、コントロールを再作成/読み込みする負の副作用がなく、ViewState /イベント処理の問題を回避できます。 –