Asp.net

更新面板中的下拉列表

  • October 19, 2020

在我的項目中,我在更新面板中放置了一個下拉列表。我想做的是從下拉列表中選擇一個值並在會話中使用它。

但無論我做什麼,它總是會給我空值,因為沒有檢查“啟用 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);
   }

引用自:https://stackoverflow.com/questions/1256943