2015-06-04 4 views
0

Я сделал это миллион раз и понятия не имею, что мне здесь не хватает ... Единственное различие заключается в том, что я не жестко кодирую в выпадающих значениях меню, я динамически добавляю их через запрос. Я вывешу то, что я ниже ...SelectedItem выпадающего меню C#

ASP.NET:

<asp:DropDownList ID="drpDownMenu" runat="server" CssClass="fields" EnableViewState="true"> 
     <asp:ListItem Text="<Select Device>" Value="0" /> 
</asp:DropDownList> 

C#:

private void PopulateDeviceDropDown() 
    { 
     DataTable dtDrpDownListItems = new DataTable(); 
     string selecItems = "myQuery this works and loads fine"; 

     try 
     { 
      SqlDataAdapter adapter = new SqlDataAdapter(selecItems , sqlConn); 
      sqlConn.Open(); 
      adapter.Fill(dtDrpDownListItems); 
      drpDownMenu.DataSource = dtDrpDownListItems; 
      drpDownMenu.DataTextField = "Number"; 
      drpDownMenu.DataBind(); 
     } 
     catch (Exception ex) 
     { 
      //do something here 
     } 

     finally 
     { 
      sqlConn.Close(); 
     }   
     drpDownMenu.Items.Insert(0, new ListItem("<Select Device>", "0")); 
    } 


protected void btnSave_Click(object sender, EventArgs e) 
    { 
     string test = ""; 
     test = drpDownMenu.SelectedItem.Text; 
    } 

В выше в PopulateDeviceDropDown прекрасно работает .. делает что это должно быть сделано.

Следующая btnSave_Click также не увольняют, но переменная test всегда возвращает <Select Device> независимо от того, что выбор я делаю ...

Я пропускаю что-то очевидное здесь? Он должен вернуть элемент, который я выбрал, но возвращает первый элемент в меню независимо.

Любой совет?

+0

нажатием кнопки вы получаете оценку e из drpDownLoadNewDevice, как вы добавляете элементы в drpDownMenu, вы уверены, что это должно быть? – Angloos

+0

вам также не хватает настроек DataValuefield(). Set drpDownMenu.DataValueField – Angloos

ответ

0

Убедитесь, что вы включили в вас загрузке страницы

(!IsPostback) 
{ 
    PopulateDeviceDropDown() 

} 
+0

Да, у меня есть, что я просто не опубликовал его здесь – codeBoy

+0

@codeBoy: Можете ли вы изменить это на вопрос? –

0

Не 100% уверен, но я хотел бы попробовать удалить

<asp:ListItem Text="<Select Device>" Value="0" /> 

и заменить его с кодом:

drpDownMenu.Items.Insert(0, new ListItem("<Select Device>", "0")); 
drpDownMenu.Items.SelectedIndex = 0; 

HTH

+0

Я не думаю, что это его проблема, я не вижу drpDownLoadNewDevice населения где-нибудь в своем коде, и я не вижу drpDownLoadNewDevice в asp-странице – Angloos

+0

да, поэтому я удалил свой ответ lol – Angloos

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