2015-06-04 196 views
0

我已经做了这一百万次,并没有线索我在这里失踪....唯一的区别是我不是在下拉菜单中的硬编码值,我通过动态添加它们一个问题。我会后我有什么下面...下拉菜单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 from drpDownLoadNewDevice如何添加项目到drpDownMenu,你确定它应该是怎么样的? – Angloos

+0

你也缺少设置DataValuefield()。设置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

是啊,这就是为什么我删除了我的答案大声笑 – Angloos