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

Paginar un datagrid con filtro

Estas en el tema de Paginar un datagrid con filtro en el foro de .NET en Foros del Web. Hola, alguien tiene un ejemplo de un datagrid que pafine con un filtro, que se aplica cuando el usuario ingresa un dato en un textbox ...
  #1 (permalink)  
Antiguo 18/08/2003, 09:30
Avatar de vamp_02  
Fecha de Ingreso: febrero-2002
Ubicación: Santiago de Chile
Mensajes: 367
Antigüedad: 22 años, 2 meses
Puntos: 0
Paginar un datagrid con filtro

Hola, alguien tiene un ejemplo de un datagrid que pafine con un filtro, que se aplica cuando el usuario ingresa un dato en un textbox


Gracias

__________________
yerba mala nunca....te la fumes...
  #2 (permalink)  
Antiguo 19/08/2003, 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
Hola... que tipo de filtro es el que buscas..??? por cierto.. recuerda que el filtro de un data grid solo funciona cuando tiene la opcion de AutoGenerateColumns = True

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

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 19/08/2003, 13:42
Avatar de vamp_02  
Fecha de Ingreso: febrero-2002
Ubicación: Santiago de Chile
Mensajes: 367
Antigüedad: 22 años, 2 meses
Puntos: 0
Primero que nada Gracias por responder..
Bueno, tengo una pagina, en asp.net con conexion a una bd access 2003 o 2000, la pagina tiene un form, donde hay un textbox y un boton, un datagrid.

Bueno cuendo se entra a la pagina, se carga el datagrid, pero cuando el usuario ingresa un texto, en el textbox ej.: L%, y le da click al boton, este boton ejecuta una consulta o query a la bd y extrae datos, la primera pagina ya filtrada la muestra bien el el datagrid, pero cuando son mas de una pagina , de la pagina 2 en adelante, muestra los datos no filtrados...es decir, como cuando se ejecuto el Page load.

y ya no doy mas, lo he intentado...pero no me resulta.


__________________
yerba mala nunca....te la fumes...
  #4 (permalink)  
Antiguo 20/08/2003, 09:43
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
ok.. ya mas o menos te entendí .. mira.. lo que tienes que hacer primero es cargar tu data grid en tu page_load... con esta condición para cargarla solo la primera vez.

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

If Not Page.IsPostBack Then
LlenaGrid() 'Procedimiento para llenar mi grid cada vez que haya algun cambio
End If

End Sub

Sub LlenaGrid()
Dim DS As New DataSet()
Dim origen As DataView
Dim opc As Integer
Dim sqlCmd As String

sqlCmd = "select * from tu tabla" 'tu select normal (todavía sin escribir nada en un cuadro de texto para tomarlo como criterio)

Dim sqlCon As New SqlClient.SqlConnection(ConfigurationSettings.AppS ettings("connectionstring"))
Dim dAdap As New SqlClient.SqlDataAdapter(sqlCmd, sqlCon)
dAdap.Fill(DS, "Conexion")
origen = New DataView(DS.Tables("Conexion"))
DataGrid1.DataSource = origen
Try
DataGrid1.DataBind()
Catch
DataGrid1.CurrentPageIndex = 0
DataGrid1.DataBind()
End Try

End Sub

Ahora configuremos el paginado..(obviamente en tiempo de diseño le das la opcion de pagiar y posteriormente le inluyes su code como lo siguiente:)

<asp:datagrid....etc...OnPageIndexChanged="CambioPage"
...
..
y en codigo:

Sub CambioPage(ByVal obj As Object, ByVal e As DataGridPageChangedEventArgs)
LlenaGrid()
DataGrid1.CurrentPageIndex = e.NewPageIndex
DataGrid1.DataBind()
End Sub


Despues por ejemplo.. en un boton que va a leer el criterio o la cadena a buscar que está en un textbox podrías hacer lo siguiente:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strSelect As String
Dim DS As New DataSet()
sqlCmd = "select * from tu_tabla where campo like '" & textbox1.text & "'"

Dim sqlCon As New SqlClient.SqlConnection(ConfigurationSettings.AppS ettings("connectionstring"))
Dim dAdap As New SqlClient.SqlDataAdapter(sqlCmd, sqlCon)
dAdap.Fill(DS, "Conexion")
DataGrid1.DataSource = DS
DataGrid1.CurrentPageIndex = 0
DataBind()
End Sub


Bueno.. pues creo que ésto sería todo.. si te fijas lo que mas interesa es el postback... solo carga el grid la primera vez...y se converva el estado hasta que cambies el criterio (textbox) y podrás navegar por tu grid..respetando los resultados.

Saludos y cualquier cosa por aqui andamos.
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 20/08/2003, 10:02
Avatar de vamp_02  
Fecha de Ingreso: febrero-2002
Ubicación: Santiago de Chile
Mensajes: 367
Antigüedad: 22 años, 2 meses
Puntos: 0
Gracias lo voy a probar
__________________
yerba mala nunca....te la fumes...
  #6 (permalink)  
Antiguo 22/08/2003, 09:54
Avatar de vamp_02  
Fecha de Ingreso: febrero-2002
Ubicación: Santiago de Chile
Mensajes: 367
Antigüedad: 22 años, 2 meses
Puntos: 0
rootK, sabes aun no me funca.....y cuando paso a la pagina 2, por ejemplo...no me muestra datos, desaparece el grid....

__________________
yerba mala nunca....te la fumes...
  #7 (permalink)  
Antiguo 24/08/2003, 18:26
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
Ok... vamos a hacer una cosa... te mando un ejemplo en cuanto me desocupe de la chamba... de todas formas si necesitas algo te paso el mail de mi trabajo.

[email protected]

Saludos
  #8 (permalink)  
Antiguo 24/08/2003, 20:53
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
Me di un tiempo y ya te envié el ejemplo a tu correo..

Saludos
  #9 (permalink)  
Antiguo 24/08/2003, 21:04
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
MMm.. que mala suerte... por el momento tengo algunos problemas con mi correo... pero te escribo el código tal cual, sirve que los demas lo ven. (Lo hice con V.Studio)

Por cierto.. omití las directivas page language y el codebehind... el inherits y todo lo demás que va hasta arriba. eso depende de tu archivo. pero todo lo que sigue haz copy and paste. , y utiulice la BD de ejemplo de NorthWind de SQL Server

código datagrid.aspx (HTML)

Cita:
<HTML>
<HEAD>
<title>DataList</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<P>&nbsp;
<asp:DataGrid id="DataGrid1" runat="server" Width="474px" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanged="Cambio" AllowSorting="False" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="3" GridLines="Horizontal" PageSize="3">
<SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle>
<ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle>
<FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="CompanyName" HeaderText="Company"></asp:BoundColumn>
<asp:BoundColumn DataField="Address" HeaderText="Address"></asp:BoundColumn>
<asp:BoundColumn DataField="City" HeaderText="City"></asp:BoundColumn>
</Columns>
<PagerStyle Font-Size="X-Small" Font-Bold="True" BorderStyle="None" HorizontalAlign="Left" ForeColor="#4A3C8C" BackColor="#E7E7FF" Mode="NumericPages"></PagerStyle>
</asp:DataGrid></P>
<P>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox></P>
</form>
</body>
</HTML>

y en la página
datagrid1.aspx.vb

Cita:
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Web.UI.WebControls
Public Class myDataGrid
Inherits System.Web.UI.Page
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Dim DS As DataSet = New DataSet()

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGrid1.DataSource = RetrieveDS()
DataGrid1.CurrentPageIndex = 0
DataGrid1.DataBind()
End Sub

Function RetrieveDS() As DataSet

Dim str As String

str = "select * from Customers where CompanyName like '" & TextBox1.Text & "%'"
Dim sqlCon As New SqlConnection(ConfigurationSettings.AppSettings("c onnectionstring"))
Dim dAdap As New SqlDataAdapter(str, sqlCon)

dAdap.Fill(DS)

Return DS

End Function

Sub cambio(ByVal o As Object, ByVal e As DataGridPageChangedEventArgs)
Try 'Por si la página no existe o está fuera del rango
DataGrid1.CurrentPageIndex = e.NewPageIndex
DataGrid1.DataSource = RetrieveDS()
DataGrid1.DataBind()
Catch
DataGrid1.CurrentPageIndex = 0
DataGrid1.DataSource = RetrieveDS()
DataGrid1.DataBind()
End Try

End Sub

End Class

Esa sería mas o menos la idea... no entre en detalles porque te digo que ando con un poco de trabajo, y este código fue el primero que se me ocurrió. jeje

Saludos
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 17:38.