我遇到了一个问题,当我尝试检索下拉列表中某个项目的选定值时,它只会返回其中第一个项目的选定值。
这是我用来填充下拉列表中的代码,其中包含来自Sql-Server
中的表的数据 protected void Page_Load(object sender, EventArgs e)
{
String Sql = @" select * from SupportTeam";
SqlConnection conn = new SqlConnection(Properties.Resources.cString);
SqlDataAdapter DA = new SqlDataAdapter(Sql, Properties.Resources.cString);
DataSet DS = new DataSet();
DA.Fill(DS, "SupportTeam");
DataTable DT = DS.Tables["SupportTeam"];
DropDownList1.DataValueField = "supportTeamID";
DropDownList1.DataTextField = "supportTeamName";
DropDownList1.DataSource = DT;
DropDownList1.DataBind();
}
当我加载Web表单时,一切正常,所有项目都显示在下拉列表中,但我遇到的问题是,当我在下拉列表中更改所选项目时,DataValueField保持不变
这是一个例子。我在Sql
中的表中有2行SupportTeamID SupportTeamName
5 - Marketing 8 - e-Learning
当我加载我的Web表单时,所选索引设置为0表示DataValueField为5.当我从下拉列表中选择e-Learning时,当我调试它时仍然说DataValueField是5时它应该是8。
以下是我用来在按钮点击事件中检索所选值的代码
supportTeamID = Convert.ToInt32(DropDownList1.SelectedValue);
每次运行时,supportTeamID始终设置为5
我做错了什么或丢失了吗?提前致谢
答案 0 :(得分:1)
你必须在代码不是IsPostBack
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
String Sql = @" select * from SupportTeam";
SqlConnection conn = new SqlConnection(Properties.Resources.cString);
SqlDataAdapter DA = new SqlDataAdapter(Sql, Properties.Resources.cString);
DataSet DS = new DataSet();
DA.Fill(DS, "SupportTeam");
DataTable DT = DS.Tables["SupportTeam"];
DropDownList1.DataValueField = "supportTeamID";
DropDownList1.DataTextField = "supportTeamName";
DropDownList1.DataSource = DT;
DropDownList1.DataBind();
}
}