Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET DropDownList OnSelectedIndexChanged event not fired

I'm trying to use some AJAX and ASP.Net together to enable me to run functions without having to refresh the whole page but i've stumbled across a problem in doing this

Here's my code

<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>

And here's my code behind

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

    txt1.Text = Now.ToString

End Sub

The event doesn't fire because I don't have AutoPostBack="True" on my ddl but adding that to the ddl will postback the whole page.

Is there a way to avoid using AutoPostBack="True" so that it only updates the panel?

I know I can use an asp:Button to get around this but i'd really like to be able to use a ddl with OnSelectedIndexChanged

Thanks

like image 338
Jamie Taylor Avatar asked May 03 '11 10:05

Jamie Taylor


1 Answers

If you want to avoid to send the whole viewstate to the server, you should look at callbacks.

Instead, if you want to avoid a refresh of the entire page, but with postback, this should work:

<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>
like image 197
onof Avatar answered Nov 02 '22 23:11

onof