Foros del Web » Programando para Internet » ASPX (.net) »

Como evitar el refresco de pagina luego de un SelectedValueChange de un DropDownList

Estas en el tema de Como evitar el refresco de pagina luego de un SelectedValueChange de un DropDownList en el foro de ASPX (.net) en Foros del Web. Hola y primero que nada felicitar esta comunidad que me ha sido de mucha ayuda. Tengo un problema y desde hace un par de semanas ...
  #1 (permalink)  
Antiguo 15/04/2013, 16:59
Avatar de Faunel  
Fecha de Ingreso: abril-2013
Ubicación: Valencia, España
Mensajes: 4
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta Como evitar el refresco de pagina luego de un SelectedValueChange de un DropDownList

Hola y primero que nada felicitar esta comunidad que me ha sido de mucha ayuda.

Tengo un problema y desde hace un par de semanas no he logrado resolverlo, tengo la siguiente estructura de controles:



Consiste en un GridView anidado dentro de un FieldTemplate de otro GridView, como se muestra en la imagen, el desafío CHA42 se repite en las Practicas PRA01 y PRA23.

Lo que hago es consultando un valor en una columna oculta del GridView si el desafío es independiente de la practica cuando el usuario cambie el valor del DropDownList del desafio CHA42 en una practica debo poner ese mismo valor en todas las practicas donde aparezca ese desafío.

El código que estoy usando es el siguiente:

Código:
Protected Sub DDL0_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim indice As Integer = CType(CType(sender, DropDownList).Parent.Parent.Parent.Parent.Parent.Parent, GridViewRow).RowIndex
        Dim IdDesafio As Integer = Val(CType(CType(sender, DropDownList).Parent.Parent.FindControl("Label6"), Label).Text)

        'Dim Dependiente As Boolean = CType(CType(sender, DropDownList).Parent.Parent.FindControl("CB_Dependiente"), CheckBox).Checked
        Dim dp As String = CType(CType(sender, DropDownList).Parent.Parent.FindControl("Label8"), Label).Text

        Dim valor As Integer = CType(sender, DropDownList).SelectedValue
        Dim gvHijo As New GridView


        If Not dp = "True" Then
            For i As Integer = 0 To GridView4.Rows.Count - 1
                If i <> indice Then
                    gvHijo = CType(GridView4.Rows(i).FindControl("GridView6"), GridView)
                    For ii As Integer = 0 To gvHijo.Rows.Count - 1
                        If IdDesafio = Val(CType(gvHijo.Rows(ii).FindControl("Label6"), Label).Text) Then
                            DirectCast(gvHijo.Rows(ii).FindControl("DDL0"), DropDownList).SelectedValue = valor
                        End If
                    Next
                End If
            Next
        End If

        SetFocus(DirectCast(sender, DropDownList))
    End Sub
End Class
Este código FUNCIONA, pero me refresca toda la pagina y cuando son muchas practicas pues es muy molesto para los usuarios, He intentado usar ScriptManager y UpdatePanels pero si pongo el GridView padre dentro de un UpdatePanel, al cambiar el valor no pasa NADA, no se ejecuta el Codebehind.

De verdad que agradecería cualquier ayuda para obtener el resultado que quiero sin el refresco de pagina.

Gracias de Antemano

Un Saludo
  #2 (permalink)  
Antiguo 16/04/2013, 15:55
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Como evitar el refresco de pagina luego de un SelectedValueChange de un Dr

Buenas,

Para que no se refresque toda la pantalla tienes que usar UpdatePanel o javascript puro.

Tienes que tener en cuenta que los UpdatePanel pueden tener dos modos de funcionamiento a la hora de actualizarse y son: Always y Conditional.

En los siguientes links se explican ambos modos y como usarlos:

http://msdn.microsoft.com/es-es/libr...datepanel.aspx

http://msdn.microsoft.com/es-es/libr...code-snippet-3

http://dunderio.com/como-usar-update...-para-humanos/

Si tienes alguna duda sobre el código con los UpdatePanel, nos pones aquí el código del aspx y vemos que puede estar pasando.

Un saludo y espero que te sea de ayuda.
  #3 (permalink)  
Antiguo 16/04/2013, 16:53
Avatar de Faunel  
Fecha de Ingreso: abril-2013
Ubicación: Valencia, España
Mensajes: 4
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como evitar el refresco de pagina luego de un SelectedValueChange de un Dr

Hola, he agregado el update panel pero no puedo establecer el triguer porque el control que quiero que desencadene el evento es el DropDownList y esta anidado dentro de el gridview hijo (desafíos). El ScripManager no lo ves xq esta fuera en el master page no se si esto influya.

Así ha quedado el codigo, pero no se ejecuta el evento..

Código:
<asp:UpdatePanel ID="UpdatePanel2" runat="server" 
                                UpdateMode="Conditional">
                                            <ContentTemplate>
                                                <asp:GridView ID="GridView4" runat="server" AutoGenerateColumns="False" 
                                                    DataKeyNames="IdPractica" DataSourceID="DS_R1Practicas" Width="690px">
                                                    <Columns>
                                                        <asp:TemplateField>
                                                            <ItemTemplate>
                                                                <table>
                                                                    <tr>
                                                                        <td>
                                                                            <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/images/more.png" 
                                                                                onclientclick='<%# Eval("IdPractica", "javascript:url({0}); return false;") %>' 
                                                                                Width="25px" />
                                                                        </td>
                                                                        <td>
                                                                            <asp:ImageButton ID="ImageButton3" runat="server" CausesValidation="False" 
                                                                                CommandArgument='<%# Eval("IdEvalIdPrac") %>' ImageUrl="~/images/diana.jpg" 
                                                                                oncommand="ImageButton3_Click" Width="25px" />
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </ItemTemplate>
                                                            <ItemStyle HorizontalAlign="Center" VerticalAlign="Top" Width="10px" />
                                                        </asp:TemplateField>
                                                        <asp:TemplateField HeaderText="Id" Visible="False">
                                                            <ItemTemplate>
                                                                <asp:Label ID="Label7" runat="server" Text='<%# Eval("IdPractica") %>'></asp:Label>
                                                            </ItemTemplate>
                                                        </asp:TemplateField>
                                                        <asp:BoundField DataField="IdPractica" HeaderText="IdPractica" 
                                                            InsertVisible="False" ReadOnly="True" SortExpression="IdPractica" 
                                                            Visible="False" />
                                                        <asp:BoundField DataField="CxR" HeaderText="CxR" ReadOnly="True" 
                                                            SortExpression="CxR" Visible="False" />
                                                        <asp:TemplateField HeaderText="Prácticas y sus desafíos">
                                                            <ItemTemplate>
                                                                <asp:Label ID="Label4" runat="server" style="font-weight: 700; color: #0066CC;" 
                                                                    Text='<%# Eval("Nombre") %>'></asp:Label>
                                                        <hr />
                                                                <asp:GridView ID="GridView6" runat="server" AutoGenerateColumns="False" 
                                                                    DataKeyNames="IdDesafio" DataSource='<%# GetDesafios(Eval("IdPractica")) %>' 
                                                                    Width="600px">
                                                                    <Columns>
                                                                        <asp:TemplateField HeaderText="Id" Visible="False">
                                                                            <ItemTemplate>
                                                                                <asp:Label ID="Label6" runat="server" Text='<%# Eval("IdDesafio") %>' 
                                                                                    ToolTip='<%# Eval("Descripcion") %>'></asp:Label>
                                                                            </ItemTemplate>
                                                                        </asp:TemplateField>
                                                                        <asp:BoundField DataField="Nombre" HeaderText="Desafíos" 
                                                                            SortExpression="Nombre">
                                                                        <HeaderStyle HorizontalAlign="Center" />
                                                                        <ItemStyle HorizontalAlign="Left" Width="70%" />
                                                                        </asp:BoundField>
                                                                        <asp:TemplateField HeaderText="Dificultad">
                                                                            <ItemTemplate>
                                                                                <asp:DropDownList ID="DDL0" runat="server" AutoPostBack="True" 
                                                                                    CausesValidation="True" Height="20px" 
                                                                                    onselectedindexchanged="DDL0_SelectedIndexChanged" Width="215px">
                                                                                    <asp:ListItem Value="0">Ninguna, no existe este desafío</asp:ListItem>
                                                                                    <asp:ListItem Value="1">Fácilmente superable</asp:ListItem>
                                                                                    <asp:ListItem Selected="True" Value="2">Tendría algunos impedimentos</asp:ListItem>
                                                                                    <asp:ListItem Value="3">Sería difícil lograrlo</asp:ListItem>
                                                                                    <asp:ListItem Value="4">Imposible de conseguir</asp:ListItem>
                                                                                </asp:DropDownList>
                                                                            </ItemTemplate>
                                                                            <ItemStyle Width="15%" />
                                                                        </asp:TemplateField>
                                                                        <asp:TemplateField HeaderText="Dependencia" Visible="False">
                                                                            <ItemTemplate>
                                                                                <asp:CheckBox ID="CB_Dependiente" runat="server" 
                                                                                    Checked='<%# Eval("DependienteDeLaPractica") %>' />
                                                                        <br />
                                                                                <asp:Label ID="Label8" runat="server" 
                                                                                    Text='<%# Eval("DependienteDeLaPractica") %>'></asp:Label>
                                                                            </ItemTemplate>
                                                                        </asp:TemplateField>
                                                                    </Columns>
                                                                </asp:GridView>
                                                            </ItemTemplate>
                                                            <HeaderStyle Font-Size="Small" Font-Underline="False" ForeColor="#666666" 
                                                                HorizontalAlign="Center" />
                                                            <ItemStyle HorizontalAlign="Left" />
                                                        </asp:TemplateField>
                                                    </Columns>
                                                    <RowStyle HorizontalAlign="Center" />
                                                </asp:GridView>
                                            </ContentTemplate>
                            </asp:UpdatePanel>
  #4 (permalink)  
Antiguo 17/04/2013, 12:43
Avatar de othix  
Fecha de Ingreso: mayo-2011
Ubicación: Guatemala
Mensajes: 92
Antigüedad: 13 años, 5 meses
Puntos: 9
Respuesta: Como evitar el refresco de pagina luego de un SelectedValueChange de un Dr

cambia esto

Código ASP:
Ver original
  1. <asp:UpdatePanel ID="UpdatePanel2" runat="server"
  2.                                 UpdateMode="Conditional">

por esto


Código ASP:
Ver original
  1. <asp:UpdatePanel ID="UpdatePanel2" runat="server"
  2.                                 UpdateMode="Always">
__________________
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."

Etiquetas: ajax, codebehind, dropdownlist, gridview, postback
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:14.