2013-04-05 3 views
1

В приведенном ниже коде C#, хотя я выбираю свой собственный год, но все же значение передается только в 1920 году. Я вижу все значения, отображаемые в раскрывающемся списке, но когда я выбираю значение и отправляю его, в базу данных передается только 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

2

Попробуйте это;

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

Спасибо правильный ответ +1 – Kerry

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