我有一个从数据库填充的下拉列表。当我使用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();
}
请帮忙,先谢谢。
答案 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();
}
}