Gridview de tri vers le haut/flèche vers le bas dans les en-têtes de colonne
Je suis actuellement en train de travailler sur un code qui prend en charge le tri et la pagination des données dans un contrôle gridview. Je vais maintenant essayer de mettre en œuvre le tri des flèches (haut/bas flèches à en-têtes de colonne), mais je n'ai pas de succès. Le code à mettre en œuvre le tri des flèches est situé dans le *GridView1_RowCreated* sous-routine. Maintenant, lorsque je lance le code, je ne vois pas le tri des flèches. La ligne problématique est la suivante: "Si tblAdministrators.SortExpression = lnk.CommandArgument Puis" je ne peux pas comprendre quel est le problème avec cette ligne. C'est toujours Faux par conséquent, les flèches n'apparaissent pas.
Private Function GetData(sort As SortDirection) As Data.DataView
Dim connection As OracleDBConnect = DAL.GetOracleDBConnection()
Dim request As OracleDBRequest = Nothing
Dim result As OracleDBResult = Nothing
Dim trace As OracleDBChronoTrace = Nothing
Dim status As DBStatus
Dim sb As New StringBuilder
Dim dv As DataView
With sb
.Append("SELECT * FROM USERS")
End With
request = New OracleDBRequest(sb.ToString, CommandType.Text)
status = connection.Execute(request, result, trace)
dv = New DataView(result.DataSet.Tables(0))
If (ViewState("sortExp") IsNot Nothing) Then
dv = New Data.DataView(result.DataSet.Tables(0))
If (GridViewSortDirection = SortDirection.Ascending) Then
GridViewSortDirection = SortDirection.Descending
dv.Sort = CType(ViewState("sortExp").ToString() & DESCENDING, String)
Else
GridViewSortDirection = SortDirection.Ascending
dv.Sort = CType(ViewState("sortExp").ToString() & ASCENDING, String)
End If
Else
dv = result.DataSet.Tables(0).DefaultView
End If
Return dv
End Function
Public Property GridViewSortDirection() As SortDirection
Get
If ViewState("sortDir") Is Nothing Then
ViewState("sortDir") = SortDirection.Ascending
End If
Return CType(ViewState("sortDir"), SortDirection)
End Get
Set(ByVal value As SortDirection)
ViewState("sortDir") = value
End Set
End Property
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles tblAdministrators.PageIndexChanging
tblAdministrators.PageIndex = e.NewPageIndex
GridViewSortDirection = If(GridViewSortDirection = SortDirection.Descending, SortDirection.Ascending, SortDirection.Descending)
tblAdministrators.DataSource = GetData(GridViewSortDirection)
tblAdministrators.DataBind()
End Sub
Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles tblAdministrators.Sorting
ViewState("sortExp") = e.SortExpression
tblAdministrators.DataSource = GetData(GridViewSortDirection)
tblAdministrators.DataBind()
End Sub
Protected Sub GridView1_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles tblAdministrators.RowCreated
If e.Row.RowType = DataControlRowType.Header Then
For Each tc As TableCell In e.Row.Cells
If tc.HasControls() Then
Dim lnk As LinkButton = DirectCast(tc.Controls(0), LinkButton)
If lnk IsNot Nothing Then
Dim img As New System.Web.UI.WebControls.Image()
img.ImageUrl = "/images/" & (If(GridViewSortDirection = SortDirection.Ascending, "asc", "desc")) & ".gif"
If tblAdministrators.SortExpression = lnk.CommandArgument Then
tc.Controls.Add(New LiteralControl(" "))
tc.Controls.Add(img)
End If
End If
End If
Next
End If
End Sub
ASPX code:
<asp:GridView ID="tblAdministrators" runat="server" AutoGenerateColumns="false" EmptyDataText="No records found" PageSize="25" AllowPaging="True" AllowSorting="True" OnRowCreated="GridView1_RowCreated">
<Columns>
<asp:BoundField HeaderText="Name" DataField="Name" SortExpression="NAME"></asp:BoundField>
</Columns>
<Columns>
<asp:BoundField HeaderText="City" DataField="City" SortExpression="CITY"></asp:BoundField>
</Columns>
</asp:GridView>
OriginalL'auteur Mark Marina | 2012-10-03
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à mon exemple:
Attention sur SortedAscendingHeaderStyle et SortedDescendingHeaderStyle. Il suffit de créer winrar classes css avec l'image de fond (flèche haut et flèche bas) et vous avez terminé.
C'est juste un exemple de source de données. Il devrait fonctionner sur n'importe quel autre type de source de données.
Le "DataSourceID" est obligatoire afin de pouvoir utiliser ces fonctions (SortedAscendingHeaderStyle etc...) Dans mon code, je ne suis pas à l'aide d'un contrôle de source de données, mais je suis plutôt de faire un manuel de la liaison de données.
L'OP doit être une version de asp.net inférieure à 4.0
Sur la mienne l'icône de la flèche indique toujours sur le dessus du texte d'en-tête. Comment peut-on forcer l'affichage d'un bit vers la droite de la fin du texte?
OriginalL'auteur Gregor Primar
Afin d'ajouter un tri flèche dans une Grille de Données sur un VB.net Formulaire Windows, vous n'avez même pas à écrire du code
Privé Sous _CellDoubleClick(sender as Object, e as DataGridViewCellEventArgs) Poignées DGAcctGrpList.CellDoubleClick
OriginalL'auteur Pramod Chandra