如何在下拉列表中获取所选项的值?

时间:2012-05-16 09:42:37

标签: c# asp.net data-binding drop-down-menu selecteditem

我有一个从数据库填充的下拉列表。当我使用dplTags.SelectedItem.Value时,只返回第一个值,而不是我选择的那个?

有人可以告诉我哪里出错了?

我打电话的时候:

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

它始终返回第一个项目的TagID,而不是选定的项目:\

这就是我绑定它的方式:

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();
            }

请帮忙,先谢谢。

3 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:1)

保持页面的视图状态并仅在Page.IsPostback == false

时对数据下拉进行数据绑定

答案 2 :(得分: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();
            }
}