Foros del Web » Programación para mayores de 30 ;) » .NET »

Ejemplo para moverse entre registro con asp.net

Estas en el tema de Ejemplo para moverse entre registro con asp.net en el foro de .NET en Foros del Web. Hola, en el siguiente ejemplo (solo basta con copiar y pegar) podrán moverse entre registro con un dataset, y voy a poner el ejemplo usando ...
  #1 (permalink)  
Antiguo 17/05/2004, 09:16
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Ejemplo para moverse entre registro con asp.net

Hola, en el siguiente ejemplo (solo basta con copiar y pegar) podrán moverse entre registro con un dataset, y voy a poner el ejemplo usando un datalist para que parezca paginacion, ya dependerá de ustedes como adaptar el código para lo que necesitan.

Utilicé un 2 labels para guardar el Tamaño de la página (intPageSize) y el Indice actual de mi registro(intCurrIndex), los dos con la propiedad visible=false

Un datalist donde usé 2 campos (que pueden ser los que ustedes quieran, solo sería cosa de irlo adaptando)

(Esta en VB.Net pero para c# se darán cuenta que no es dificl adaptarlo )

Modo HTML

Cita:
<asp:datalist id="dList" runat="server" Width="100%">
<HeaderTemplate>
<table width="100%" style="font: 10pt verdana" cellpadding="0" cellspacing="0">
<tr style="background-color:blue">
<th align="left">
<font color="#FFFFFF">Campo 1</font></th>
<th align="left">
<font color="#FFFFFF">Campo 2</font></th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color:gainsboro">
<td width="50%"><%# DataBinder.Eval(Container.DataItem, "NombreCampo1 ") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "NombreCampo2 ") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:datalist></P>
<P><a name="mensaje"></a>
<table width="100%" align="right">
<tr>
<td align="left" width="76%"><asp:label id="lblStatus " Font-Size="10pt" Font-Name="verdana" Runat="server"></asp:label></td>
<td width="6%"><A id="hrefFirst" href="datalistpaging.aspx#this" runat="server" onserverclick="ShowFirst "><b>&lt;&lt;</b></A>
</td>
<td width="6%"><A id="hrefPrevious" href="#" runat="server" onserverclick="ShowPrevious "><b>&lt;</b></A>
</td>
<td width="6%"><A id="hrefNext" href="#" runat="server" onserverclick="ShowNext "><b>&gt;</b></A>
</td>
<td width="6%"><A id="hrefLast" href="#" runat="server" onserverclick="ShowLast "><b>&gt;&gt;</b></A>
</td>
</tr>
</table>
</P>
<P><asp:label id="intCurrIndex" Runat="server" Visible="False"></asp:label>
<asp:label id="intPageSize" Runat="server" Visible="False"></asp:label><asp:label id="intRecordCount" Runat="server" Visible="False"></asp:label></P>

Codebing de la página:

Cita:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If Not Page.IsPostBack() Then

intPageSize.Text = "10" 'aqui indican el tamañano de la página
intCurrIndex.Text = "0" 'Inicializo el indice
Bind()

End If


End Sub


Private Sub Bind()
Dim objConn As New SqlConnection(ConfigurationSettings.AppSettings("c onnectionString"))
Dim objDA As New SqlDataAdapter("SELECT * FROM TABLA", objConn)
Dim objDS As New DataSet

If Not Page.IsPostBack() Then
objDA.Fill(objDS)
intRecordCount.Text = CStr(objDS.Tables(0).Rows.Count)
objDS = Nothing
objDS = New DataSet
End If

If intCurrIndex.Text = 0 Then
hrefPrevious.Visible = False
Else
hrefPrevious.Visible = True
End If

objDA.Fill(objDS, CInt(intCurrIndex.Text), CInt(intPageSize.Text), "Logs")


dList.DataSource = objDS.Tables(0).DefaultView
dList.DataBind()
objConn.Close()
PrintStatus()
End Sub

Public Sub ShowFirst (ByVal s As Object, ByVal e As EventArgs)
intCurrIndex.Text = "0"
Bind()
End Sub

Public Sub ShowPrevious (ByVal s As Object, ByVal e As EventArgs)
intCurrIndex.Text = CStr(CInt(intCurrIndex.Text) - CInt(intPageSize.Text))
If CInt(intCurrIndex.Text) < 0 Then
intCurrIndex.Text = "0"
End If
Bind()
End Sub

Public Sub ShowNext (ByVal s As Object, ByVal e As EventArgs)
If CInt(intCurrIndex.Text) + 1 < CInt(intRecordCount.Text) Then
intCurrIndex.Text = CStr(CInt(intCurrIndex.Text) + CInt(intPageSize.Text))
End If
Bind()
End Sub

Public Sub ShowLast (ByVal s As Object, ByVal e As EventArgs)
Dim tmpInt As Integer

tmpInt = CInt(intRecordCount.Text) Mod CInt(intPageSize.Text)
If tmpInt > 0 Then
intCurrIndex.Text = CStr(CInt(intRecordCount.Text) - tmpInt)
Else
intCurrIndex.Text = CStr(CInt(intRecordCount.Text) - CInt(intPageSize.Text))
End If
Bind()
End Sub

Private Sub PrintStatus()
lblStatus .Text = "Total Records:<b>" & intRecordCount.Text
lblStatus.Text += "</b> - Showing Page:<b> "
lblStatus.Text += CStr(CInt(CInt(intCurrIndex.Text) / CInt(intPageSize.Text) + 1))
lblStatus.Text += "</b> of <b>"

If (CInt(intRecordCount.Text) Mod CInt(intPageSize.Text)) > 0 Then
lblStatus.Text += CStr(CInt(CInt(intRecordCount.Text) / CInt(intPageSize.Text) + 1))
Else
lblStatus.Text += CStr(CInt(intRecordCount.Text) / CInt(intPageSize.Text))
End If
lblStatus.Text += "</b>"
End Sub
Espero que les funcione y cualquier cosa avisenme.

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #2 (permalink)  
Antiguo 17/05/2004, 10:14
Avatar de juagarc4  
Fecha de Ingreso: octubre-2003
Ubicación: En casa
Mensajes: 127
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola a to2;

Genial!!! Rootk,
Me ha funcionado a la primera, es muy bueno, lo he modificado para que me funcionara con registros individuales y va de maravilla!!!

En dos palabras: Im-Presionante

Salu2
__________________
El que pregunta lo que no sabe, es ignorante durante 5 minutos, el que no lo pregunta lo es de por vida (Proverbio Chino)
La tonteria se pone siempre en primera fila, para ser vista. La inteligencia se pones siempre detrás para poder ver. (Alguien lo dijo, seguro)
  #3 (permalink)  
Antiguo 17/05/2004, 10:18
Avatar de lucxx  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 321
Antigüedad: 20 años, 5 meses
Puntos: 0
Excelente ejemplo RootK . Otra cosa más a añadir a la futura biblioteca

Salu2
  #4 (permalink)  
Antiguo 17/05/2004, 10:58
Avatar de juagarc4  
Fecha de Ingreso: octubre-2003
Ubicación: En casa
Mensajes: 127
Antigüedad: 20 años, 6 meses
Puntos: 0
Si me lo permites, RootK....

Hola a otra vez,

Si me lo permites RootK, me gustaria exponer una modificación para que usando tu código se pueda hacer un formulario en el que se muestren datos en TextBox de Registro en Registro, igual que representamos datos en una WinForm y que nos desplazamos con una Barra de Navegación.

Si te parece mal, dímelo y lo quito, ¿ok?

Bueno, vamos allá.

Lo único que tiene que hacer es añdir tantos campos de texto como campos seleccionen en su consulta SELECT
Y luego añadir en el evento Bind()
las siguientes lineas

Código:
 txtBox1.Text = objDS.Tables(0).Rows(0).Item(0)
 txtBox2.Text = objDS.Tables(0).Rows(0).Item(1)
  ....
 txtBoxN.Text= objDS.Tables(0).Rows(0).Item(n)
De forma que el Código quedaría del evento Bind() quedaría así:

Código:
 Private Sub Bind()
       Dim objConn As New SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
       Dim objDA As New SqlDataAdapter("SELECT * FROM TABLA", objConn)
        Dim objDS As New DataSet
        
        If Not Page.IsPostBack() Then
            objDA.Fill(objDS)
            intRecordCount.Text = CStr(objDS.Tables(0).Rows.Count)
            objDS = Nothing
            objDS = New DataSet
        End If

        If intCurrIndex.Text = 0 Then
            hrefPrevious.Visible = False
        Else
            hrefPrevious.Visible = True
        End If

        objDA.Fill(objDS, CInt(intCurrIndex.Text), CInt(intPageSize.Text), "Logs")
        'dList.DataSource = objDS.Tables(0).DefaultView 'Esto tampoco lo uso
        
        txtBox1.Text = objDS.Tables(0).Rows(0).Item(Indice del campo/columna que se mostrará en este TextBox)
        txtBox2.Text = objDS.Tables(0).Rows(0).Item(Indice del campo/columna que se mostrará en este TextBox)
                
'dList.DataBind() 'comento el llenado del dList porque no lo uso
        objConn.Close()
        PrintStatus()
    End Sub
Además, para que vaya de UNO en UNO en el paso de registros, ha de cambiar en el vento Load() la siguiente linea:

Código:
intPageSize.Text = "1"

Bueno, por lo demás ya no hay que tocar nada (el que no quiera el dList, puede borrarlo)

Supongo que hay gente que ya lo habia pensado y modificado para que hiciera esto, pero también habrá otra gente que, por lo que sea, no lo habia conseguido. Espero que esto ayude y
que me perdonen esta intromisión, sobretodo tú, RootK.
Y como ya te digo arriba, si te ha molestado o algo, sólo dímelo sin más y lo quito,¿ok?

salu2
__________________
El que pregunta lo que no sabe, es ignorante durante 5 minutos, el que no lo pregunta lo es de por vida (Proverbio Chino)
La tonteria se pone siempre en primera fila, para ser vista. La inteligencia se pones siempre detrás para poder ver. (Alguien lo dijo, seguro)

Última edición por juagarc4; 17/05/2004 a las 11:01
  #5 (permalink)  
Antiguo 17/05/2004, 11:09
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Espero que esto ayude y
que me perdonen esta intromisión, sobretodo tú, RootK.
No hay problema friend... , ya sabes que cada uno adapta el code conforme a sus necesidades y lo que pusiste es otra forma de mostrar los datos que a alguien mas le puede servir.

Saludos
  #6 (permalink)  
Antiguo 17/05/2004, 11:13
Avatar de juagarc4  
Fecha de Ingreso: octubre-2003
Ubicación: En casa
Mensajes: 127
Antigüedad: 20 años, 6 meses
Puntos: 0
Así da gusto...

OK, gracias RootK,

Con compañeros como los de este Foro da gusto compartir información y conocimientos (aunque no sean muchos, jeje).

Salu2
__________________
El que pregunta lo que no sabe, es ignorante durante 5 minutos, el que no lo pregunta lo es de por vida (Proverbio Chino)
La tonteria se pone siempre en primera fila, para ser vista. La inteligencia se pones siempre detrás para poder ver. (Alguien lo dijo, seguro)
  #7 (permalink)  
Antiguo 08/07/2004, 00:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 13
Antigüedad: 19 años, 10 meses
Puntos: 0
Error con este codigo

Ante todo dar las gracias a todos los que hacen posible esta web.

Usando Dreamweaver mx el listado me prodice este error.

Error de compilación
Descripción: Error durante la compilación de un recurso requerido para dar servicio a esta solicitud. Revise los detalles de error específicos siguientes y modifique el código fuente en consecuencia.


Error de compilación Descripción: Error durante la compilación de un recurso requerido para dar servicio a esta solicitud. Revise los detalles de error específicos siguientes y modifique el código fuente en consecuencia. Mensaje de error del compilador: BC30456: 'ShowFirst' no es un miembro de 'ASP.Untitled_3b_ejemplo_aspx'.

La linea es la siguiente:
Línea 53: <td width="6%"><A id="hrefFirst" href="datalistpaging.aspx#this" runat="server" onserverclick="ShowFirst"><b>&lt;&lt;</b></A>
supongo que en las siguientes lineas de la barra de navegacion dara el mismo error:ShowPrevious etc....

Gracias por su tiempo.
  #8 (permalink)  
Antiguo 01/06/2005, 07:11
 
Fecha de Ingreso: junio-2005
Mensajes: 3
Antigüedad: 18 años, 10 meses
Puntos: 0
Estimado RootK y amigos

Soy novato en el tema .net y me estoy engranado con asp.net, el ejemplo planteado lo instale en mi maquina pero me da un error o no es un error del parser solo que no tengo declarado lblStatus, me da error del Control lblStatus

como puedo solucionar este problemita?

Saludos,
Carlos Vergara
  #9 (permalink)  
Antiguo 01/06/2005, 08:56
 
Fecha de Ingreso: junio-2005
Mensajes: 3
Antigüedad: 18 años, 10 meses
Puntos: 0
Estimados,

Ya resolví el problema, si se fijan en el codigo HTML en la declaración del label lblStatus existe un espacio de mas.

Saludos
  #10 (permalink)  
Antiguo 07/05/2006, 14:03
Avatar de affv  
Fecha de Ingreso: diciembre-2002
Ubicación: Ahora aqui
Mensajes: 485
Antigüedad: 21 años, 4 meses
Puntos: 0
como debo modificar la coneccion a la base de datos si estoy utilizando access como motor de datos.

He intentado con este cambio y nada

Dim objConn As New OdbcConnection("Driver={Microsoft dBase Driver (*.dbf)};DBQ='C:\Data.mdb'")
Dim objDA As New OdbcDataAdapter("SELECT * FROM Productos", objConn)

No se cual es la cadena correcta? Estoy perdido?
__________________
Todo tiene un comienzo y un fin!!
Postea tus proyectos

Última edición por affv; 07/05/2006 a las 14:24
  #11 (permalink)  
Antiguo 07/05/2006, 14:40
Avatar de affv  
Fecha de Ingreso: diciembre-2002
Ubicación: Ahora aqui
Mensajes: 485
Antigüedad: 21 años, 4 meses
Puntos: 0
Disculpen ya lo logre.. la coneccion era asi
Dim objConn As New OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Data.mdb;")
__________________
Todo tiene un comienzo y un fin!!
Postea tus proyectos
  #12 (permalink)  
Antiguo 08/05/2006, 08:28
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Si estas usando Access te recomiendo que lo hagas mejor a través de Oledb en vez de hacerlo por Odbc

Salu2
  #13 (permalink)  
Antiguo 23/01/2008, 11:44
 
Fecha de Ingreso: enero-2008
Mensajes: 2
Antigüedad: 16 años, 3 meses
Puntos: 0
Esta estupenda la idea solo que tengo un problemita

Yo navego bien a traves de textbox, mi pregunta es, si yo edito una informacion en la base de datos como hago para que se me actualice visualmente, no se como hacerlo, de antemano muchisimas gracias me sirvio bastante su a aporte
  #14 (permalink)  
Antiguo 10/09/2013, 16:39
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Ejemplo para moverse entre registro con asp.net

Muchas gracias me sirvio para lo que necesitaba, ahora le voy a hacer mis modificaciones.
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 22:34.