0

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

请帮助,在此先感谢。

4

3 回答 3

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
    }
}
于 2012-05-16T09:52:02.610 回答
1

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

于 2012-05-16T09:50:25.023 回答
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();
            }
}
于 2012-05-16T09:55:16.457 回答