none
Duda con GridView dentro de UpdatePanel RRS feed

  • Pregunta

  • Hola, buenas tardes.

    Estoy desarrollando una aplicación en ASP.Net y en C#, la cual contiene un GridView dentro de un UpdatePanel. Dicho UpdatePanel es utilizado porque el GridView se pagina, y en en el EventName del Trigger está el evento PageIndexChanging, para que no me recargue la página completa al cambiar de página dentro del grid.

    Todo esto funciona correctamente, solo que también en el mismo Grid tengo el evento onSelectedIndexChanged, el cual me recoge un Id de una celda y manda llamar una función de JavaScript que me realiza determinada accción.

    El código del GridView es el siguiente:

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
                    </asp:ScriptManager>
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                            <fieldset>
                                <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
                                    Caption="Información BD Genesis" Font-Size="Smaller" HorizontalAlign="Justify"
                                    OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="5" SelectedIndex="0"
                                    ShowFooter="True" Width="100%" OnSelectedIndexChanged="onSelectedIndexChanged"
                                    PagerSettings-Mode="NumericFirstLast" EnableModelValidation="True" OnRowDataBound="GridView1_RowDataBound">
                                    <FooterStyle Font-Size="Smaller" />
                                    <HeaderStyle Font-Size="Larger" Font-Underline="True" HorizontalAlign="Center" VerticalAlign="Middle" />
                                    <PagerStyle BorderStyle="Groove" Font-Size="Large" />
                                </asp:GridView>
                            </fieldset>
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="PageIndexChanging" />
                        </Triggers>
                    </asp:UpdatePanel>

    Y el código del evento onSelectedIndexChanged es el siguiente, he puesto una alerta a manera de prueba para comprobar que entra:

     protected void onSelectedIndexChanged(object sender, EventArgs e)
            {
                int _intId = Convert.ToInt32(GridView1.SelectedRow.Cells[0].Text);
                Response.Write("<script>alert('"+_intId+"');</script>");
                double[] centroide = negociosClientes.obtenerCentroide("clientes", "id_cliente", _intId);
                this.Literal5.Text = "<script>"
                    + "var map = document.getElementById('divMapa');"
                    + "acercarCliente(map, "+centroide+");"
                    + "</script>";
            }

    El problema es que el UpdatePanel me bloquea el acceso a dicho método, y si lo quito sí entra. ¿Alguna solución a este problema?, ¿O hace falta alguna validación en el código?

    Utilizo Visual Studio 2010 y el Framework 3.5.

    De antemano muchas gracias por su atención.

    miércoles, 18 de marzo de 2015 23:37

Todas las respuestas

  • Deberías añadir el evento OnSelectedIndexChanged como trigger del UpdatePanel:

    <Triggers>
      <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="PageIndexChanging" />
      <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="OnSelectedIndexChanged" />
      </Triggers>

    miércoles, 18 de marzo de 2015 23:57
  • Asier Villanueva:

    Intenté añadiendo el evento al trigger y sigue sin entrar a dicho evento.

    jueves, 19 de marzo de 2015 0:07