2013-11-14 20 views
5

私はASPとC#を使って.NETにWebフォームを持っています。このフォームにはDropDownListコントロールのAutoPostBackプロパティがに設定されています。Trueに設定されています。.NET ASP C#でQueryStringを正しく使用するには?

ユーザーがDropDownListからアイテムを選択すると、フォームのデータが表示されます。

ここでは、ユーザーがhttp://www.site.com?ProdID=1234のようにQueryStringを持つURLをコピーするだけで、自分のデータを共有できるようにしたいと考えています。

私が行っている、これを達成しようとするには、次

protected void Page_Load(object sender, EventArgs e) 
{ 
    // check if the URL has a QueryString item if yes the use it. 
    if (!String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
    { 
     ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
    } 
} 

このコードの問題は、ユーザーがDropDownListコントロールから別の項目を選択したとき、彼または彼女の選択した項目ををPage_Load(によって上書きされてしまうことです)URLにQueryStringが追加されています。 (私はQueryStringを構築し、イベントの同じページにRedirect()メソッドを使用します)

私の質問は次のとおりです:ユーザーが選択したものを変更したときに、アイテムをドロップダウンリストから選択し、選択したアイテムのフォームに適切なデータを表示しますか?

私はこれが鶏肉や卵の問題のような気分です。

ありがとうございます。ページはこのように、既存のロジックと一緒に、バックサーバに掲載されているかどうかについて

+0

'場合(Page.IsPostBack && String.IsNullOrEmpty(場合、Request.QueryString [ "ProdID"]))) ' – asawyer

答えて

10

チェック!:

if(!IsPostBack && !String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
{ 
    ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
} 
関連する問題