Gridview sorting up/down arrow in column headers

deneme111111

New Member
I'm currently working on some code which is taking care of sorting and paging data in a gridview. I'm now trying to implement sorting arrow (up/down arrows next to column headers) but I have no success. The code to implement the sorting arrows is located in the *GridView1_RowCreated* sub routine. Right now, when I run the code, I don't see the sorting arrows at all. The problematic line is the following one: "If tblAdministrators.SortExpression = lnk.CommandArgument Then" I can't figure out what's wrong with that line. It's always False therefore the arrows don't show up.\[code\]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 dvEnd FunctionPublic 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 SetEnd PropertyProtected 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 SubProtected 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 SubProtected 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 IfEnd Sub\[/code\]ASPX code:\[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>\[/code\]
 
Back
Top