2012-05-16 159 views
0

我有一个从数据库填充的下拉列表。当我使用dplTags.SelectedItem.Value它只返回第一个值,而不是我选择的那个?如何在下拉列表中获取所选项目的值?

有人可以打电话给我,我哪里会出错?

当我把它叫做:

String TagID = dplTags.SelectedItem.Value; // Will only select the first value???? 

它总是返回的第一个项目,而不是选择一个的标签识别:\

这是我如何将它绑定:

using (var conn = new SqlConnection(Properties.Settings.Default.DBConnectionString)) 
      { 
       conn.Open(); 

       SqlDataAdapter daTags 
       = new SqlDataAdapter("Select * From Tag", conn); 

       DataSet dsTags = new DataSet("TagCloud"); 

       daTags.FillSchema(dsTags, SchemaType.Source, "Tag"); 
       daTags.Fill(dsTags, "Tag"); 

       daTags.MissingSchemaAction = MissingSchemaAction.AddWithKey; 
       daTags.Fill(dsTags, "Tag"); 

       DataTable tblTag; 
       tblTag = dsTags.Tables["Tag"]; 

       dplTags.DataSource = dsTags; 
       dplTags.DataMember = "Tag"; 
       dplTags.DataValueField = "TagID"; //Value Member 
       dplTags.DataTextField = "Value"; // Display Member 
       dplTags.DataBind(); 
      } 

请帮助,在此先感谢。启用和数据绑定页面

+0

尝试DropDownList.SelectedItem.Value.ToString(),它适用于我。还要尝试调试代码来检查DropDownList项的实际SelectedValue。 –

+0

试过.ToString()没有任何区别。即使我选择第5项并在下拉列表中显示了第5项的值,但是当我单击提交按钮并使用子弹点检查我的代码时,.selecteditem始终是第一项。 – Pomster

+0

Adil的解决方案可以满足您的需求。试试那个。 –

回答

3

你在哪里数据绑定到这些下拉列表控件?它们应该仅在页面的初始加载中被绑定,如下所示。我怀疑你是在每一页加载中绑定它们,因此选定的值消失。

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!Page.IsPostBack) 
    { 
     //Please check if you are binding checkbox controls here. 
     //If not bring them in here 
    } 
} 
+0

没有只在一个page_load中,我只有一个页面 – Pomster

1

保持视图状态下拉只有当Page.IsPostback ==假

+0

正如Romil的回复 - > http://stackoverflow.com/a/10616087/525251 – rt2800

1

绑定一次在第一页的负荷,不回发再次绑定它的下拉列表中。再次绑定它将填充新元素的下拉列表,之前的选择将会丢失。

if(!Page.IsPostBack) 
{ 
using (var conn = new SqlConnection(Properties.Settings.Default.DBConnectionString)) 
      { 
       conn.Open(); 

       SqlDataAdapter daTags 
       = new SqlDataAdapter("Select * From Tag", conn); 

       DataSet dsTags = new DataSet("TagCloud"); 

       daTags.FillSchema(dsTags, SchemaType.Source, "Tag"); 
       daTags.Fill(dsTags, "Tag"); 

       daTags.MissingSchemaAction = MissingSchemaAction.AddWithKey; 
       daTags.Fill(dsTags, "Tag"); 

       DataTable tblTag; 
       tblTag = dsTags.Tables["Tag"]; 

       dplTags.DataSource = dsTags; 
       dplTags.DataMember = "Tag"; 
       dplTags.DataValueField = "TagID"; //Value Member 
       dplTags.DataTextField = "Value"; // Display Member 
       dplTags.DataBind(); 
      } 
} 
相关问题