C# ASP.net将选定项保存为会话的下拉列表

C# ASP.net将选定项保存为会话的下拉列表,c#,asp.net,C#,Asp.net,我想将下拉列表中的选定项目保存为会话,但我总是从位置表中获得第一个结果 ASP.net: <div> <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList> </div> 问题是:总是从数据库中检索第一个位置 protected void btnGo_Click(object sender, EventArgs e) { string loca

我想将下拉列表中的选定项目保存为会话,但我总是从位置表中获得第一个结果

ASP.net:

<div>
    <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
</div>
问题是:总是从数据库中检索第一个位置

protected void btnGo_Click(object sender, EventArgs e)
{
    string location;
    Session["userLocation"] = DropDownList1.SelectedItem;
    location = Session["userLocation"].ToString();
}

谢谢您的帮助。

只有当
页面.IsPostBack
等于
False
时,您才应该进行绑定


原因可能是每次请求页面时都会调用填充
DropDownList1
的数据操作。也有可能在执行
btnGo_Click
之前执行此数据检索,因此
SelectedIndex
将重置为0,这是您案例中的第一个位置。

很可能是因为您在pageload中绑定听起来像是对的。我如何绑定它而不是在pageload上?我更喜欢使用ObjectDataSource,SqlDataSource和其他,从来没有你的问题这一个仍然抓住我,解决了我的问题!在我的例子中,dropdownlist是一个用户控件,使用母版页放置在另一个detailsview用户控件中,但该规则仍然适用。
protected void btnGo_Click(object sender, EventArgs e)
{
    string location;
    Session["userLocation"] = DropDownList1.SelectedItem;
    location = Session["userLocation"].ToString();
}