2014-10-02 3 views
0

Привет, я пытаюсь удалить значение из списка, когда он выбран в списке выпадающего списка, но при первом вызове Button1_Click1 он всегда удаляет первый индекс (в этом случай а) я понятия не имею, что происходитasp .Net Выпадающий список, возвращающий первое значение в первый раз

List<String> Alph = new List<String>(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if ((List<String>)Session["Alpha"] != null) 
    { 
     Alph = (List<String>)Session["Alpha"]; 
    } 
    else 
    { 
     fillAlpha(); 
    } 


} 
public void fillAlpha() 
{ 
    Alph = new List<String>() { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; 

    Alph.Sort(); 
    DropDownList1.DataSource = Alph; 
    DropDownList1.DataBind(); 

} 

protected void Button1_Click1(object sender, EventArgs e) 
{ 
    Label1.Text = DropDownList1.Text; 
    Alph.RemoveAt(DropDownList1.SelectedIndex); 
    DropDownList1.DataSource = Alph; 
    DropDownList1.DataBind(); 
    Session["Alpha"] = Alph; 
} 
+1

Вы не хватает ', если' – Vivekh

ответ

0

Page_Load не вызывается каждый пост-спине, и он вызывается перед тем обработчик щелчка. Так что, когда вы это делаете:

DropDownList1.DataSource = Alph; 
DropDownList1.DataBind(); 

Вы затирания DropDownList1 и вновь заселять его. Затем, когда вы исследуете его:

Label1.Text = DropDownList1.Text; 
Alph.RemoveAt(DropDownList1.SelectedIndex); 

Он собирается показать вам значение по умолчанию, что означает то, что это первое значение в источнике данных, к которым он связан.

Вы можете предотвратить это с помощью условного только заполнить его на начальной загрузки страницы, а не после возврата:

if (!IsPostBack) 
{ 
    DropDownList1.DataSource = Alph; 
    DropDownList1.DataBind(); 
} 
+0

Спасибо так много это работало (IsPostBack!) отлично, и я вижу, что я сделал не так! – Xaviex

Смежные вопросы