Asp.net
更新面板中的下拉列表
在我的項目中,我在更新面板中放置了一個下拉列表。我想做的是從下拉列表中選擇一個值並在會話中使用它。
但無論我做什麼,它總是會給我空值,因為沒有檢查“啟用 AutoPostBack”。當我這樣做時,它會刷新頁面,所以這不是我想要的。
聽起來您可能沒有正確使用 UpdatePanel 功能。如果您將 UpdatePanel 設置為在子觸發事件時更新,則只有 UpdatePanel 應該刷新,而不是整個頁面。下面的程式碼似乎與您正在尋找的類似。更改下拉列表時,只有更新面板回發到伺服器,當您刷新頁面時,您可以從會話中獲取值。
ASPX 程式碼
<form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> Current Time: <asp:Label ID="lblTime" runat="server" /><br /> Session Value: <asp:Label ID="lblSessionValue" runat="server" /><br /> <br /> <asp:UpdatePanel ID="upSetSession" runat="server"> <ContentTemplate> <asp:DropDownList ID="ddlMyList" runat="server" onselectedindexchanged="ddlMyList_SelectedIndexChanged" AutoPostBack="true"> <asp:ListItem>Select One</asp:ListItem> <asp:ListItem>Maybe</asp:ListItem> <asp:ListItem>Yes</asp:ListItem> </asp:DropDownList> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddlMyList" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> </div> </form>程式碼背後
protected void Page_Load(object sender, EventArgs e) { this.lblTime.Text = DateTime.Now.ToShortTimeString(); if (Session["MyValue"] != null) this.lblSessionValue.Text = Session["MyValue"].ToString(); } protected void ddlMyList_SelectedIndexChanged(object sender, EventArgs e) { Session.Remove("MyValue"); Session.Add("MyValue", this.ddlMyList.SelectedValue); }