2009-08-24 9 views
3

.ascxファイルはページライフサイクルの早い段階で自然にレンダリングされるため、.ascxパーツ外のフォームの情報を更新するには、.ascxファイルをどのように更新すればよいですか。ボタンのクリック(情報を保存するもの)と同じように、変更を反映しますか?例えば.ascxファイルの内容をリフレッシュする

(擬似コード):

​​

答えて

3

保存されたデータに基づいて構築されているユーザーコントロールを作成している場合。何ができると、その建物を行うメソッドを作成し、ページおよびユーザーコントロール(擬似コード)以内にそれを呼び出すです:

ユーザーコントロール:ページを呼び出す

protected Page_Load(object sender, EventArgs e) 
{ 
    BuildControlBasedOnData(); 
} 

public BuildControlBasedOnData() 
{ 
    // Build the user control based on saved data 
} 

Button_Click(object sender, EventArgs e) 
{ 
    UserControl1.BuildControlBasedOnData();  
} 
3

ユーザーコントロール(た.ascxファイル)は、あなたが言及同じように、含まれているページのライフサイクルの間にレンダリングされます。ポップバックをクリックすると、ポストバック時にユーザーコントロールが完全に再レンダリングされます。あなたはこの負荷時に異なる情報が含まれているためにユーザーコントロールが必要な場合はあなたが行うことができます多くのものがあります:あなたのユーザーコントロールで

  • は、データストアに移動し、その負荷のイベント中に必要な情報やその他の適切なを返しますイベントご含む ページのページ読み込みで(コントロールのデータバインドなど)
  • 、あなたはユーザー コントロールの さまざまな側面内で使用 ユーザーコントロールのプロパティに値を割り当てます。これらの値は、データストアまたはクエリ文字列の 、または となります。

他にもたくさんのオプションがあります。部分的なポストバックやAJAXyタイプのものについて話しているのであれば、おそらくJavaScriptを使用してUser Controlのさまざまな部分を更新する必要があります(UpdatePanelsを使用していない限り、悪意のあるためではありません) 。

+0

これは、infoがpage_load関数の外に保存された後にユーザーコントロールを再レンダリングする方法を教えてくれません... – Jason

2

I私が不完全でありながらも使用可能な解決策であると信じていることを考え出しました。私がしたのはPage_Loadの機能を.ascxファイルPublicに作成してから、情報が保存された後に呼び出されただけです。これは私の問題を世話しました。

もっと洗練されたソリューションをお持ちの方は、教えてください。

+1

これを行う必要はありません。 Phairohが上記に言及しているように、ユーザーコントロールは、そのページのページライフサイクルに従います。パブリックプロパティと、レンダリングされる前にユーザーコントロールを変更するメソッドを公開することができます。 – CAbbott

+0

私はちょうど 'Page_load'関数を呼び出す' ReRender'というパブリックメソッドを作成しますか? – Jason

+0

あなたが達成しようとしていると思われるものに答えるために私の答えを修正しました。基本的には、ユーザーコントロール内のパブリックメソッドであり、必要に応じてコントロールを再構築するために呼び出すことができます。 – CAbbott

関連する問題