DataGrid con paginación y ordinenacion a la vez no funciona

04/07/2004 - 14:44 por Xus | Informe spam
Pues eso... que al hacer una ordenación, y pasar a la paginación, el tema
deja de funcionar.

He provado con enableviewstate=true pero tampoco nada (demasiado facil para
funcionar, jeje)

Alguien sabe como solucionar eso?

Graciaass!

XUs.

Preguntas similare

Leer las respuestas

#1 Xus
04/07/2004 - 15:32 | Informe spam
Despues de mucho buscar por internet y ver ejemplos complicadísimos (al
menos para mi) modificando el viewstate y otras cosas, se me ha ocurrido
esto, lo mas facil, sencillo: session

Pego el codigo por si a álguien le sirve


Imports System.Data.OleDb

Public Class index
Inherits System.Web.UI.Page
Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
Protected WithEvents grid As System.Web.UI.WebControls.DataGrid
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents grid2 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Label2 As System.Web.UI.WebControls.Label

#Region " Código generado por el Diseñador de Web Forms "

'El Diseñador de Web Forms requiere esta llamada.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: el Diseñador de Web Forms requiere esta llamada de método
'No lo modifique con el editor de código.
InitializeComponent()
End Sub

#End Region




Sub connectaGrid()
Dim Conn As OleDbConnection
Dim sql As OleDbDataAdapter
Dim dades As DataSet

Conn = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
Source=" & Server.MapPath("dades.mdb"))
sql = New OleDbDataAdapter("SELECT idAmic, nom, telefon FROM amic",
Conn)
dades = New DataSet()

sql.Fill(dades)

grid.DataSource = dades
grid.DataBind()

End Sub

Sub connectaGrid2Ordenat(ByVal elementOrdenacio As String)
Dim Conn As OleDbConnection
Dim sql As OleDbDataAdapter
Dim dades As DataSet

Conn = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
Source=" & Server.MapPath("dades.mdb"))
sql = New OleDbDataAdapter("SELECT idAmic, nom, telefon FROM amic
ORDER BY " & elementOrdenacio, Conn)
dades = New DataSet()

sql.Fill(dades)

grid2.DataSource = dades
grid2.DataBind()
End Sub


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
If Session("ordena") = "" Then
Session("ordena") = "idAmic"
End If

connectaGrid()
connectaGrid2Ordenat(Session("ordena"))


End Sub

Private Sub grid_PageIndexChanged(ByVal source As System.Object, ByVal
e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles
grid.PageIndexChanged
grid.CurrentPageIndex = e.NewPageIndex
connectaGrid()
End Sub


Private Sub grid2_SortCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles
grid2.SortCommand
Session("ordena") = e.SortExpression
connectaGrid2Ordenat(e.SortExpression)
End Sub

Private Sub grid2_PageIndexChanged(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles
grid2.PageIndexChanged
grid2.CurrentPageIndex = e.NewPageIndex
connectaGrid2Ordenat(Session("ordena"))
End Sub


<asp:DataGrid EnableViewState="True" AllowSorting="True" id="grid2"
style="Z-INDEX: 103; LEFT: 103px; POSITION: absolute; TOP: 216px"
Runat="server" BackColor="#6699cc" AlternatingItemStyle-BackColor="#cccccc"
HeaderStyle-Font-Bold="True" HeaderStyle-ForeColor="#ffffff"
HeaderStyle-Font-Size="10px" HeaderStyle-Font-Name="Verdana"
ItemStyle-Font-Size="10px" HeaderStyle-BackColor="#330066"
ItemStyle-Font-Name="Verdana" GridLines="Horizontal"
AutoGenerateColumns="False" PageSize="5" AllowPaging="True"
PagerStyle-ForeColor="#ffffff" PagerStyle-Font-Size="10px"
PagerStyle-Font-Name="Verdana" PagerStyle-BackColor="#330066" Width="300px"
ItemStyle-HorizontalAlign="Left">
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
<ItemStyle Font-Size="10px" Font-Names="Verdana"
HorizontalAlign="Left"></ItemStyle>
<HeaderStyle Font-Size="10px" Font-Names="Verdana" Font-Bold="True"
ForeColor="White" BackColor="#330066"></HeaderStyle>

<Columns>
<asp:BoundColumn SortExpression="idAmic" DataField="idAmic"
HeaderText="ID">
<ItemStyle Font-Names="Arial" Width="20px"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn SortExpression="nom" DataField="nom"
HeaderText="Nom">
<ItemStyle Width="200px"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn SortExpression="telefon" DataField="telefon"
HeaderText="Tel&#232;fon"></asp:BoundColumn>
</Columns>

<PagerStyle Font-Size="10px" Font-Names="Verdana" ForeColor="White"
BackColor="#330066"></PagerStyle>
</asp:DataGrid>
Respuesta Responder a este mensaje
#2 Daniel Sharp
04/07/2004 - 23:56 | Informe spam
aunque tu codigo funciona, te imaginas cargar a sesion una tabla
sobrepoblada? y peor si no eres el unico, sesion existe por cada uno de los
usuarios, te recomendaría la utilización de paginacion customizada,
recomiendo que le des una vista a Cutting Edge de MSDN, es la sección de
dino esposito
http://msdn.microsoft.com/msdnmag/f...ing%20edge

saludos
daniel #

"Xus" wrote in message
news:1ccox1j5uay58.bkbb55ey5ibw$
Despues de mucho buscar por internet y ver ejemplos complicadísimos (al
menos para mi) modificando el viewstate y otras cosas, se me ha ocurrido
esto, lo mas facil, sencillo: session

Pego el codigo por si a álguien le sirve


Imports System.Data.OleDb

Public Class index
Inherits System.Web.UI.Page
Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
Protected WithEvents grid As System.Web.UI.WebControls.DataGrid
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents grid2 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Label2 As System.Web.UI.WebControls.Label

#Region " Código generado por el Diseñador de Web Forms "

'El Diseñador de Web Forms requiere esta llamada.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: el Diseñador de Web Forms requiere esta llamada de


método
'No lo modifique con el editor de código.
InitializeComponent()
End Sub

#End Region




Sub connectaGrid()
Dim Conn As OleDbConnection
Dim sql As OleDbDataAdapter
Dim dades As DataSet

Conn = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
Source=" & Server.MapPath("dades.mdb"))
sql = New OleDbDataAdapter("SELECT idAmic, nom, telefon FROM


amic",
Conn)
dades = New DataSet()

sql.Fill(dades)

grid.DataSource = dades
grid.DataBind()

End Sub

Sub connectaGrid2Ordenat(ByVal elementOrdenacio As String)
Dim Conn As OleDbConnection
Dim sql As OleDbDataAdapter
Dim dades As DataSet

Conn = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
Source=" & Server.MapPath("dades.mdb"))
sql = New OleDbDataAdapter("SELECT idAmic, nom, telefon FROM amic
ORDER BY " & elementOrdenacio, Conn)
dades = New DataSet()

sql.Fill(dades)

grid2.DataSource = dades
grid2.DataBind()
End Sub


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
If Session("ordena") = "" Then
Session("ordena") = "idAmic"
End If

connectaGrid()
connectaGrid2Ordenat(Session("ordena"))


End Sub

Private Sub grid_PageIndexChanged(ByVal source As System.Object, ByVal
e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles
grid.PageIndexChanged
grid.CurrentPageIndex = e.NewPageIndex
connectaGrid()
End Sub


Private Sub grid2_SortCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles
grid2.SortCommand
Session("ordena") = e.SortExpression
connectaGrid2Ordenat(e.SortExpression)
End Sub

Private Sub grid2_PageIndexChanged(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles
grid2.PageIndexChanged
grid2.CurrentPageIndex = e.NewPageIndex
connectaGrid2Ordenat(Session("ordena"))
End Sub


<asp:DataGrid EnableViewState="True" AllowSorting="True" id="grid2"
style="Z-INDEX: 103; LEFT: 103px; POSITION: absolute; TOP: 216px"
Runat="server" BackColor="#6699cc"


AlternatingItemStyle-BackColor="#cccccc"
HeaderStyle-Font-Bold="True" HeaderStyle-ForeColor="#ffffff"
HeaderStyle-Font-Size="10px" HeaderStyle-Font-Name="Verdana"
ItemStyle-Font-Size="10px" HeaderStyle-BackColor="#330066"
ItemStyle-Font-Name="Verdana" GridLines="Horizontal"
AutoGenerateColumns="False" PageSize="5" AllowPaging="True"
PagerStyle-ForeColor="#ffffff" PagerStyle-Font-Size="10px"
PagerStyle-Font-Name="Verdana" PagerStyle-BackColor="#330066"


Width="300px"
ItemStyle-HorizontalAlign="Left">
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
<ItemStyle Font-Size="10px" Font-Names="Verdana"
HorizontalAlign="Left"></ItemStyle>
<HeaderStyle Font-Size="10px" Font-Names="Verdana" Font-Bold="True"
ForeColor="White" BackColor="#330066"></HeaderStyle>

<Columns>
<asp:BoundColumn SortExpression="idAmic" DataField="idAmic"
HeaderText="ID">
<ItemStyle Font-Names="Arial" Width="20px"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn SortExpression="nom" DataField="nom"
HeaderText="Nom">
<ItemStyle Width="200px"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn SortExpression="telefon" DataField="telefon"
HeaderText="Tel&#232;fon"></asp:BoundColumn>
</Columns>

<PagerStyle Font-Size="10px" Font-Names="Verdana" ForeColor="White"
BackColor="#330066"></PagerStyle>
</asp:DataGrid>
Respuesta Responder a este mensaje
#3 Xus
05/07/2004 - 23:09 | Informe spam
Gracias por el consejo! Voy a ver que tal


Un saludo,

Xus
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida