我想将下拉列表的所选项目保存为会话,但我总是从位置表中获取第一个结果。
ASP.net:
<div>
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
</div>
C#(只是将位置放到下拉列表中工作正常)
using(SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("select location_id, location_name from locations", con);
con.Open();
DropDownList1.DataTextField = "location_name";
DropDownList1.DataValueField = "location_id";
DropDownList1.DataSource = cmd.ExecuteReader();
DropDownList1.DataBind();
}
问题:始终从数据库中检索第一个位置。
protected void btnGo_Click(object sender, EventArgs e)
{
string location;
Session["userLocation"] = DropDownList1.SelectedItem;
location = Session["userLocation"].ToString();
}
感谢帮助者。
答案 0 :(得分:1)
只有在Page.IsPostBack
等于False
时才应该进行绑定。
原因可能是每次请求页面时都会调用填充DropDownList1
的数据操作。此数据检索也可能在btnGo_Click
执行之前发生,因此SelectedIndex
将重置为0,这是您案例中的第一个位置。