2011-02-09 11 views
4

ユーザーが場所のデータベースから場所を選択できるようにするカスタムウィジェットを作成しました。これは私の最初のASP.netカスタムコントロールです。すべてがうまくいっているようでしたが、今問題があります。次のようにASP.netコントロールポストバックの問題

私のコントロールがRaisePostBackEvent機能を実装しています

public void RaisePostBackEvent(string eventArgument) 
{ 
    SelectedLocationId = eventArgument.Split('|')[0]; 
    SelectedLocationDescription = eventArgument.Split('|')[1]; 
} 

私は、テストページを書き、私のASPコードに次のように含ま:

<%= locationSelector.SelectedLocationId %> 

罰金働いたこと。

しかし、私のWebアプリケーションでは、次のコードはない仕事ん:私は、デバッガでこのコードを実行すると、私は私のページのLoadイベントが前にポストバックを発射すること

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Page.IsPostBack) 
     Response.Write(locationSelector.SelectedLocationId); 
     // SelectedLocationId is null here!!! 
    } 

見ますイベント!したがって、データはまだポストバックから読み取られません。私はMSがテキストフィールドコントロールを提供していることを知っています、テキストはページロードで利用できるので、私は間違って何かをしなければならないと思います。

Page Loadイベントが発生したときにユーザーが選択した場所を読み取るにはどうすればよいですか。明確にするために、私はWebアプリケーションページのページ読み込みを参照しています。

答えて

3

ポストバックイベントでSelectedLocationIdを設定すると同時に、最初の読み込み時に値を取得しようとしています。 SelectedLocationIdは正しくnullになります。

試してみてください。

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (locationSelector != null) 
     Response.Write(locationSelector.SelectedLocationId); 
    } 
+0

私の謝罪、私は投稿のコードでは、実際のコードではありません、それはPage.IsPostBack'場合、ない 'Page.IsPostBack'場合'されている必要があります!。いずれにしても、ユーザーがページ上のコードブロックを使用して入力した値を読み取ることはできますが、ページロードイベントでは読み取ることはできません。 –