【问题标题】:How to get the value of the selected Item in a Drop down list?如何在下拉列表中获取所选项目的值?
【发布时间】:2012-05-23 20:40:30
【问题描述】:

我有一个从数据库填充的下拉列表。当我使用 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();
            }

请帮忙,在此先感谢。

【问题讨论】:

  • 试试 DropDownList.SelectedItem.Value.ToString(),它对我有用。也尝试调试代码以检查 DropDownList 项的实际 SelectedValue。
  • 试过 .ToString() 没有区别。即使我选择第 5 项并在下拉列表中显示第 5 项的值,但是当我单击提交按钮并使用项目符号检查我的代码时,.selecteditem 始终是第一个。
  • Adil 的解决方案可能会达到您的目的。试试那个。

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


【解决方案1】:

您在哪里将数据绑定到这些下拉列表控件?它们应该只在页面的初始加载时绑定,如下所示。我怀疑您在每次页面加载时都绑定了它们,因此选定的值会消失。

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
    }
}

【讨论】:

  • 不只是在一页加载中,我只有一页
【解决方案2】:

仅在 Page.IsPostback == false 时保持页面的视图状态启用并数据绑定下拉列表

【讨论】:

    【解决方案3】:

    在第一个页面加载时绑定下拉列表一次,不要在回发时再次绑定。再次绑定它将用新元素填充下拉列表,并且之前的选择将丢失。

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

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多