2011-08-08 90 views
1

在我的頁面中,當我調用searchBtn_Click時,只有當選擇沒有改變時,selectedvalue纔會被帶入變量ind。因此,如果用戶選擇汽車,然後單擊搜索按鈕,然後他們將選擇更改爲政府,它會刷新頁面,並顯示汽車,我在回發中丟失的東西或在這裏做錯了什麼?DropDownList SelectedValue不會更改

protected void Page_Load(object sender, EventArgs e) 
    { 
     string industry = ""; 

     if (Request.QueryString["ind"] != null) 
     { 
      industry = Request.QueryString["ind"].ToString(); 
      if (industry != "") 
      { 
       indLabel.Text = "Industry: " + industry; 
       IndustryDropDownList.SelectedValue = industry; 
      } 
     } 
    } 

    protected void searchBtn_Click(object sender, EventArgs e) 
    { 
      string ind = IndustryDropDownList.SelectedValue; 
      Response.Redirect("Default.aspx?ind=" + ind); 
    } 
+0

IndustryDropDownList的autopostback屬性是否設置爲true? – hungryMind

回答

3

只需使用此代碼

 protected void Page_Load(object sender, EventArgs e) 
    { 
if(!IsPostBack) 
    { 
     string industry = ""; 

     if (Request.QueryString["ind"] != null) 
     { 
      industry = Request.QueryString["ind"].ToString(); 
      if (industry != "") 
      { 
       indLabel.Text = "Industry: " + industry; 
       IndustryDropDownList.SelectedValue = industry; 
      } 
     } 
     } 
    } 
0

您不需要使用Redirect和QueryString。 在Page_PreRender中使用SelectedValue(在您的示例中完全清除Page_Load)。

0

你最好試試這個搜索按鈕點擊

但要記住你的dropdowndlist的價值成員==顯示成員要做到這一點..我有同樣的問題,這是我如何解決它。

string ind = IndustryDropDownList.Text.Tostring().Trim(); 
Response.Redirect("Default.aspx?ind=" + ind); 

我KNW這是不是最好的方式,但它確實爲我工作..

0

你沒有充分利用的ViewState的替換代碼asp.net表單(儘管MVC 3的良好心態)。但是,由於您使用的是asp.net,因此您應該將代碼更改爲:

除非您希望用戶將行業設置爲進入頁面,否則無需加載頁面中的邏輯。既然我假設你做了,我就留下了一些邏輯。它檢查回發,因爲它不需要在初始頁面加載後執行。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack() && Request.QueryString["ind"] != null) 
    { 
     SetIndustry(Request.QueryString["ind"].ToString()); 
    } 
} 

protected void SetIndustry(String industry) 
{ 
    indLabel.Text = "Industry: " + industry; 
    IndustryDropDownList.SelectedValue = industry; 
} 

您不必重定向頁面,因爲每次頁面回傳時都會調用Page_Load。使用.NET,您的控件會自動記住它們的最後一個值。

protected void searchBtn_Click(object sender, EventArgs e) 
{ 
    SetIndustry(IndustryDropDownList.SelectedValue); 
} 
相關問題