ASP.NET的DropDownList控件OnSelectedIndexChanged事件未被触发

7
我将尝试使用AJAX和ASP.Net一起实现函数的运行,而无需刷新整个页面,但在此过程中我遇到了一个问题。
以下是我的代码:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="ddl1" runat="server" OnSelectedIndexChanged="update1" />

        <asp:TextBox runat="server" ID="txt1" />

    </ContentTemplate>
</asp:UpdatePanel>

这是我的后端代码:

 Sub update1(ByVal sender As Object, ByVal e As EventArgs)

    txt1.Text = Now.ToString

End Sub

事件没有触发是因为我的下拉列表框中没有设置AutoPostBack="True",但是在下拉列表框上添加此属性将会导致整个页面被回传。
有没有办法避免使用AutoPostBack="True",只更新面板?
我知道可以使用asp:Button绕过这个问题,但我真的很想能够使用带有OnSelectedIndexChanged的下拉列表框。
谢谢。

你确定要使用AutoPostBack="True"来触发整个页面的回传吗? - Govind Malviya
2
添加autopostback ='true'不应该将整个页面提交(至少页面不会闪烁)-它只应该更新更新面板的内容? - Paddy
2个回答

7
如果您想避免将整个视图状态发送到服务器,您应该查看callbacks
相反,如果您想避免整个页面的刷新,但带有回发,那么这应该可以工作:
<asp:DropDownList ID="ddl1" runat="server" OnSelectedIndexChanged="update1" AutoPostBack="True"  />

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
         <asp:AsyncPostbackTrigger ControlID="ddl1" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
        <asp:TextBox runat="server" ID="txt1" />
    </ContentTemplate>
</asp:UpdatePanel>

AutoPostBack="True". 我讨厌使用UpdatePanels(我更喜欢JQuery),所以我觉得自己回到了过去。但今天这正是我所需要的。点赞。 - granadaCoder
为什么其他地方类似问题的答案都没有给出这个答案,这对我来说完全超出了我的想象。这正是我所寻找的。谢谢。 - samuelesque

0

尝试使用相同的代码和不同的页面名称创建一个新页面。这对我有用。


1
请勿解释或改变其含义。 - Adnan Abdollah Zaki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接