UpdatePanel中的DropDownList

ier*_*soy 9 asp.net ajax updatepanel

我有个问题.

在我的项目中,我在更新面板中放置了一个下拉列表.我想要做的是从下拉列表中选择一个值并在会话中使用它.

但无论我做什么,它总是会给我空值,因为没有选中"启用AutoPostBack".当我这样做时,它会刷新页面,所以这不是我想要的.

我怎么解决这个问题?

有任何想法吗...

RSo*_*erg 24

听起来您可能没有正确使用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>
Run Code Online (Sandbox Code Playgroud)

代码背后

    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);
    }
Run Code Online (Sandbox Code Playgroud)