none
System.Web.HttpException: GridView 'GridView1' desencadenó el evento Sorting, que no estaba controlado. RRS feed

  • Pregunta

  • No logro ordernar (sort) un GridView...

    El grid incluye allowsorting="true" en su estructura

    El grid se llena sin problema y se ve perfectamente asi:

    ds = New DataSet()
                da.Fill(ds)
                GridView1.DataSource = ds.Tables(0).DefaultView
                Me.GridView1.DataBind()

    Pero no se deja reordenar....


    Luis C



    viernes, 14 de agosto de 2020 17:36

Respuestas

  • Bueno, mientras lo resolví así:

    Coloqué dos DropDownList 1) Para el campo a Ordenar y 2) otro para el Orden ASC o DESC

    Y agregue a la sentencia SQL un string contendiendo la clausula ORDER BY campo expresion

     Dim strOrderBy As String = "ORDER BY " & ddwExpresion.SelectedValue & " " & ddwOrden.SelectedValue

    Y lo agregué al comando general SQL:

            sql = "SELECT * FROM VWPFS " & strOrderBy

    Finalmente llamo a la Función "CargarGridview()"  que contiene esas especificaciones desde el evento "SelectedIndexChanged" de cada DropDownList...

    Cada DropDownList debe tener la propiedad AutoPostBack="true"

    Asi se actualiza el reordenamiento sea que elija un campo del dropdownlist "ddwExpresion", o que leija el orden del DropDownList "ddwOrden"


    Luis C


    • Editado Luis Carlos H viernes, 14 de agosto de 2020 18:38
    • Marcado como respuesta Luis Carlos H martes, 18 de agosto de 2020 17:22
    viernes, 14 de agosto de 2020 18:36

Todas las respuestas

  • El grid incluye allowsorting="true" en su estructura

    El grid por sí solo NO sabe ordenar. Lo que ocurre cuando le pones allowsorting, o cuando llamas a su método Sort, es que dispara el evento Sorting. Pero no ordena nada. Tienes que escribir tú el evento Sorting (si no existe un manejador para ese evento da el error que estás viendo), y dentro del evento tienes que recuperar de nuevo los datos desde la base de datos, ordenarlos, y una vez ordenados volvérselos a asignar al grid a través de su DataSource..
    viernes, 14 de agosto de 2020 18:26
  • Bueno, mientras lo resolví así:

    Coloqué dos DropDownList 1) Para el campo a Ordenar y 2) otro para el Orden ASC o DESC

    Y agregue a la sentencia SQL un string contendiendo la clausula ORDER BY campo expresion

     Dim strOrderBy As String = "ORDER BY " & ddwExpresion.SelectedValue & " " & ddwOrden.SelectedValue

    Y lo agregué al comando general SQL:

            sql = "SELECT * FROM VWPFS " & strOrderBy

    Finalmente llamo a la Función "CargarGridview()"  que contiene esas especificaciones desde el evento "SelectedIndexChanged" de cada DropDownList...

    Cada DropDownList debe tener la propiedad AutoPostBack="true"

    Asi se actualiza el reordenamiento sea que elija un campo del dropdownlist "ddwExpresion", o que leija el orden del DropDownList "ddwOrden"


    Luis C


    • Editado Luis Carlos H viernes, 14 de agosto de 2020 18:38
    • Marcado como respuesta Luis Carlos H martes, 18 de agosto de 2020 17:22
    viernes, 14 de agosto de 2020 18:36
  • hola

    Donde defines el evento Sorting

    GridView.Sorting Event

    en alguna parte de tu codigo deberias tener algo como ser

    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
      //codigo
    }
    eso es lo que esta indicando que no controla el evento

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 14 de agosto de 2020 18:58
  • Entonces la expresion

    Me.GridView1.Sort(expresion, direccion)

    ¿No ejecuta por si misma la instrucción?

    ¿Es necesario ejecutar el comando SQL y llenar de nuevo el GridView desde "GridView1_sorting"?

    la idea era no tener que llamar de nuevo a la funcion completa que carga el grid, solo reordenar su contenido


    Luis C


    viernes, 14 de agosto de 2020 19:09
  • Hola. Se vuelve a ejecutar la consulta para realizar la ordenación ya que dicha ordenación puede afectar a la página ion si es que la estás usando. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    sábado, 15 de agosto de 2020 18:17
    Moderador
  • Hola Luis Carlos H, 

      

    Gracias por tu respuesta de nuevo. Vamos a seguir indagando sobre la consulta que nos has realizado. 

      

    Igualmente, si resuelves el problema que estás experimentando en tu entorno, te agradecería que compartieras la solución con la comunidad de MSDN. 

      

    Espero tu respuesta. 


    Gracias por usar los foros de MSDN. 

      

     Andres Aguilar

    ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN sientase en la libertad de contactar  MSDNFSF@microsoft.com. 

    martes, 18 de agosto de 2020 16:26
    Moderador