2013-04-05 68 views
1

儘管我選擇了我自己的年份,但仍然只有1920的值,但在下面的C#代碼中。我可以看到下拉框中顯示的所有值,但是當我選擇一個值並提交時,只有1920被傳遞到數據庫。只能選擇第一個值的下拉值

protected void Page_Load(object sender, EventArgs e) 
    { 
     DropDownList3.Items.Clear(); 
      for (int i = 1920; i <= 2000; i++) 
      { 
       DropDownList3.Items.Add(i.ToString()); 
      } 
    } 
    protected void Button1_Click(object sender, EventArgs e) 
    {   
     sbtc.dex(DropDownList3.SelectedItem);   
    } 

有誰能告訴我我哪裏有錯誤嗎?

回答

3

因爲當您點擊該按鈕時,它將再次執行Page_Load事件中的代碼。解決方法是隻設置一次下拉值。您可以使用Page.IsPostBack屬性來檢查這是初始加載還是回發。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     DropDownList3.Items.Clear(); 
     for (int i = 1920; i <= 2000; i++) 
     { 
      DropDownList3.Items.Add(i.ToString()); 
     } 
    } 
} 
+1

乾杯交配:) 它的工作:) – Kerry 2013-04-05 14:17:37

2

試試這個;

if(!IsPostBack) 
[ 
    for (int i = 1920; i <= 2000; i++) 
    { 
     DropDownList3.Items.Add(i.ToString()); 
    } 
} 
+1

由於正確答案+1 – Kerry 2013-04-05 14:42:15

1

也嘗試設置這樣的選擇項的值,請務必檢查回傳

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     DropDownList3.Items.Clear(); 
      for (int i = 1920; i <= 2000; i++) 
      { 
       DropDownList3.Items.Add(new ListItem(i.ToString(), i.ToString())); 
      } 
    } 
} 
protected void Button1_Click(object sender, EventArgs e) 
{   
    sbtc.dex(DropDownList3.SelectedItem);   
} 
+0

謝謝,正確回答+1 – Kerry 2013-04-05 14:41:06

相關問題