none
Navegar por un gridview RRS feed

  • Pregunta

  • Buenas tardes foro, me encuentro con un pequeño problema, al habilitar la paginacion del GridView me lanza una excepcion y no puedo navegar en el GrdiView, solo puedo ver la primera pagina , alguien seria tan amable de explicarme como puedo hacer para ver las distintas paginas
    martes, 4 de agosto de 2015 18:56

Respuestas

  • hola

    si dentro de ventaDetalle() ya realizas el DataBind() porque vuelves hacerlo fuera ?

    ademas aconsejariaque uses

    Sub ventaDetalle(ByVal fechai As Date, ByVal fechaf As Date) As DataTable
    	Dim queris As String = "SELECT venta_Folio, vdet_Fecha, vdet_SubTotal, vdet_Total, vdet_Importe, vdet_Impuestos, vdet_IEPS FROM tVentaDetalle WHERE vdet_Fecha between @fechai and @fechaf"
    	Dim command As New SqlCommand(queris, conexion)
    	command.Parameters.AddWithValue("@fechai", fechai)
    	command.Parameters.AddWithValue("@fechaf", fechaf)
    
    	Dim adaptador As New SqlDataAdapter(command)
    	Dim datos As New DataTable
    	adaptador.Fill(datos)
    
    	Return datos
    
    End Sub 


    y lo usas

    Dim dt As DataTable = ventaDetalle(CDate(TextBox6.Text), CDate(TextBox7.Text))
    GridView5.DataSource = dt
    GridView5.DataBind()

    o sea no le pasas mas el grid por parametro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 5 de agosto de 2015 18:24

Todas las respuestas

  • Hombre sin más datos lo único que puedo hacer es dirigirte a la documentación del control:

    Cómo: Habilitar la paginación predeterminada en el control de servidor Web GridView


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 4 de agosto de 2015 18:59
  • hola

    deberias mencionar el mensaje de error real que recibes porque la intpretacion que mencionas no aporta muchos

    de casualidad defines el evento PageIndexChanging ? porque peude fallar sino lo declaras

     GridView Paging Sample in ASP.NET

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 4 de agosto de 2015 19:15
  • me mandaba este error 

    "GridView desencadenó el evento PageIndexChanging, que no estaba controlado"

    Ahora ya no me sale pero no me deja navegar por el GrdiView

    martes, 4 de agosto de 2015 20:30
  • es exactamente lo que comente, tienes que definir el evento PageIndexChanging

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 4 de agosto de 2015 20:45
  • PageSize="10"AllowPaging="true"OnPageIndexChanging="gridView_PageIndexChanging"

    copia el contenido del metodo con el que llenas el grid y has otro metodo

    private void Grid()

    llenas este metodo con el codigo con el que llenas el grid

    y despues haces el

        
    protectedvoid gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {          

    gridView.PageIndex = e.NewPageIndex;

                Grid();

            } 

    asi te debe de funcionar

    saludos

      
    • Propuesto como respuesta monkeeneitor martes, 4 de agosto de 2015 20:46
    martes, 4 de agosto de 2015 20:46
  • Y este metodo tiene que llevar alguna accion en especifico ?
    martes, 4 de agosto de 2015 20:53
  • solo lo llenas con el codigo con el que llenaste el grid

    y cuando le des click en la flechita o no se que le allas puesto para que te muestre los siguientes registros

    alli en ese momento se ejecuta esto OnPageIndexChanging="gridView_PageIndexChanging"

    lo unico que hace es volver a cargar el grid pero con los registros siguientes..

    eso me funciono ami.

    pero le tienes que poner pagezise="5" o los que quieras que te muestre enla primera hoja del grid.

    si te funciono no olvides marcar la respuesta como util saludos!

    • Propuesto como respuesta monkeeneitor martes, 4 de agosto de 2015 21:04
    martes, 4 de agosto de 2015 21:02
  • hola

    >>Y este metodo tiene que llevar alguna accion en especifico ?

    si, tiene que asignar el PageIndex  del gridview y ademas volcer a cargar los datos en el DataSource

    me pregunto analizaste el articulo que propuse? porque alli esta planteado lo que estamos mencionando

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta monkeeneitor martes, 4 de agosto de 2015 21:39
    martes, 4 de agosto de 2015 21:22
  • Leandro buenos dias ya no tengo ningun inconveniente al navegar por un gridview, pero al querer navegar a partir del segundo y tercero me manda la siguiente excepecion

    La conversión de la cadena "" en el tipo 'Date' no es válida.

    miércoles, 5 de agosto de 2015 13:35
  • hola

     >>La conversión de la cadena "" en el tipo 'Date' no es válida.

    a la query de casualidad le pasas algun parametro tipo fecha?

    o en la tabla tiene algun campo definido como datetime ? valida si recuperas un campo tipo fecha que lo definas como datetime y no como varchar, si el campo permite nulos definlo como nullable, pero nunca como string

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 5 de agosto de 2015 13:45
  • estos son los parametros que paso

     Sub cierre(ByVal tablac As GridView, ByVal fechaa As Date, ByVal fechad As Date)
            Dim consulta As String = "select cierre_Fecha, cierre_Total FROM tCierre WHERE cierre_Fecha BETWEEN @fechaa and @fechad"
            Dim comando As New SqlCommand(consulta, conexion)
            comando.Parameters.AddWithValue("@fechaa", fechaa)
            comando.Parameters.AddWithValue("@fechad", fechad)

    miércoles, 5 de agosto de 2015 13:52
  • el campo cierre_Fecha en la table de que tipo lo defines ?

    validas que al invocar el metodo cierre() le pasas una fecha valida ?

    podrias usar el TryParse()

    Dim fechadesde As DateTime
    
    If Not DateTime.TryParse(txtFecha.Text, fechadesde ) Then
       MessageBox.Show("La fecha es invalida");
       Return
    End If

    de esta forma te aseguras que la fecha que se ingreso es valida

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 5 de agosto de 2015 14:11
  • lo raro es que la excepcion no la manda en ese metodo, voy a intentar lo que me estas mencionando, pero tengo 3 gridviews distintos y al momento de mostrar los datos en el tercero me manda la excepcion que te menciono, ya dfini el pageindexchanging en los tres gridviews pero nada
    miércoles, 5 de agosto de 2015 14:24
  • puedes ver en tu codigo en que puntos convierteun string a date ? porque seguro alli le este llegando un vacio y esta claro que eso va a fallar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 5 de agosto de 2015 15:13
  • Mira un ejemplo tengo los siguientes metodos:

      Sub ventaDetalle(ByVal tablav As GridView, ByVal fechai As Date, ByVal fechaf As Date)
            Dim queris As String = "SELECT venta_Folio, vdet_Fecha, vdet_SubTotal, vdet_Total, vdet_Importe, vdet_Impuestos, vdet_IEPS FROM tVentaDetalle WHERE vdet_Fecha between @fechai and @fechaf"
            Dim command As New SqlCommand(queris, conexion)
            command.Parameters.AddWithValue("@fechai", fechai)
            command.Parameters.AddWithValue("@fechaf", fechaf)

            adaptador = New SqlDataAdapter(command)
            Dim datos As New DataTable
            adaptador.Fill(datos)

            tablav.DataSource = datos
            tablav.DataBind()
        End Sub

    Protected Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button4.Click
            Try
                ventaDetalle(GridView5, CDate(TextBox6.Text), CDate(TextBox7.Text))
                GridView5.DataBind()
            Catch ex As Exception
                If TextBox6.Text = "" Then
                    Response.Write("<script>alert('Ingresa la primera fecha, es obligatoria')</script>")
                End If
                If TextBox7.Text = "" Then
                    Response.Write("<script>alert('Ingresa la segunda fecha, es obligatoria')</script>")
                End If
            End Try
        End Sub

    miércoles, 5 de agosto de 2015 18:19
  • Y me manda lo siguiente

    La cadena de entrada no tiene el formato correcto.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código. 

    Detalles de la excepción: System.FormatException: La cadena de entrada no tiene el formato correcto.

    Error de código fuente: 
    Línea 110:    Protected Sub GridView3_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView3.PageIndexChanging
    Línea 111:        GridView3.PageIndex = e.NewPageIndex
    Línea 112:        consultar(GridView3, Convert.ToInt64(TextBox8.Text), CDate(TextBox2.Text), CDate(TextBox3.Text))
    Línea 113:    End Sub
    Línea 114:

    miércoles, 5 de agosto de 2015 18:21
  • hola

    si dentro de ventaDetalle() ya realizas el DataBind() porque vuelves hacerlo fuera ?

    ademas aconsejariaque uses

    Sub ventaDetalle(ByVal fechai As Date, ByVal fechaf As Date) As DataTable
    	Dim queris As String = "SELECT venta_Folio, vdet_Fecha, vdet_SubTotal, vdet_Total, vdet_Importe, vdet_Impuestos, vdet_IEPS FROM tVentaDetalle WHERE vdet_Fecha between @fechai and @fechaf"
    	Dim command As New SqlCommand(queris, conexion)
    	command.Parameters.AddWithValue("@fechai", fechai)
    	command.Parameters.AddWithValue("@fechaf", fechaf)
    
    	Dim adaptador As New SqlDataAdapter(command)
    	Dim datos As New DataTable
    	adaptador.Fill(datos)
    
    	Return datos
    
    End Sub 


    y lo usas

    Dim dt As DataTable = ventaDetalle(CDate(TextBox6.Text), CDate(TextBox7.Text))
    GridView5.DataSource = dt
    GridView5.DataBind()

    o sea no le pasas mas el grid por parametro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 5 de agosto de 2015 18:24