GridView Sorting

I guess i am missing something bc sorting does not work.

                                                <asp:GridView ID="gridUserInfo" AllowPaging="True" AllowSorting="True"  runat="server"
                                                AutoGenerateColumns="False" CellPadding="4" DataKeyNames="UserID"
                                                ForeColor="#333333" GridLines="None"
                                                OnPageIndexChanging="gridUserInfo_PageIndexChanging" OnSorting ="gridUserInfo_OnSorting" >
                                                    <PagerSettings PageButtonCount="15" Position="TopAndBottom" />
                                                    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                                                        <asp:TemplateField SortExpression="UserID"  HeaderText="Select">
                                                           <a href="javascript: OpenNewWindow('users.aspx?userid=<%# Eval("UserID") %>','500','600','SD')"><%# Eval("UserID") %></a>
                                                        <asp:BoundField DataField="FirstName" HeaderText="First Name" NullDisplayText="n/a">
                                                            <ItemStyle Font-Names="verdana" Font-Size="XX-Small" Width="66px" />
                                                            <HeaderStyle Font-Names="Verdana" Font-Size="XX-Small" Height="15px" HorizontalAlign="Left" />
                                                        <asp:BoundField DataField="LastName" HeaderText="Last Name" />
                                                        <asp:BoundField DataField="EmailId" HeaderText="Email">
                                                            <ItemStyle Font-Names="verdana" Font-Size="XX-Small" Width="100px" />
                                                            <HeaderStyle Font-Names="verdana" Font-Size="XX-Small" Height="15px" HorizontalAlign="Left" />

                                                    <RowStyle BackColor="#EFF3FB" />
                                                    <EditRowStyle BackColor="#2461BF" CssClass="TierBNBTitleFont" />
                                                    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                                                    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                                                    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" Font-Names="verdana" Font-Size="XX-Small" />
                                                    <AlternatingRowStyle BackColor="White" />

    Protected Sub gridUserInfo_OnSorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs)
        ' Check to see if the column we clicked on is the current column defined
        ' in the sortCriteria property.
        If Me.sortCriteria = e.SortExpression Then
            If Me.sortDir = "desc" Then
                Me.sortDir = "asc"
                Me.sortDir = "desc"
            End If
        End If

        ' Assign the column clicked to the sortCriteria property
        Me.sortCriteria = e.SortExpression
        gridUserInfo.DataSource = LoadData(Session("uId"))
    End Sub

    ' Holds the column name to be sorted on...
    Public Property sortCriteria() As String
            Return CStr(viewstate("sortCriteria"))
        End Get
        Set(ByVal Value As String)
            ViewState("sortCriteria") = Value
        End Set
    End Property

    ' Holds the direction to be sorted...
    Public Property sortDir() As String
            Return CStr(ViewState("sortDir"))
        End Get
        Set(ByVal Value As String)
            ViewState("sortDir") = Value
        End Set
    End Property
Who is Participating?
Sorry I forgot to put in the page_load:
Public tblView as DataView
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

        tblView = Dataset1.YourTableName
        If Not Page.IsPostBack Then
            Session("lastColSorted") = "YourColumnName DESC" 'This is just for a default sort
        End If
        tblView.Sort = Session("lastColSorted")
    End Sub

Good Luck
Here is a piece of code I used in the past:

Private Sub DataGrid1_SortCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles DataGrid1.SortCommand
        viewstate.Add("sortfield", e.SortExpression)
        If viewstate("sortdirection") Is Nothing Then
            viewstate.Add("sortdirection", "ASC")
            If viewstate("sortdirection") = "ASC" Then
                viewstate("sortdirection") = "DESC"
                viewstate("sortdirection") = "ASC"
            End If
        End If
        Session("lastColSorted") = e.SortExpression.ToString & " " & viewstate("sortdirection").ToString()
        tblView.Sort = e.SortExpression.ToString & " " & viewstate("sortdirection").ToString()
    End Sub

Good luck!
Carl3003Author Commented:
It was not working for me. Is sorting for datagrid and gridview the same?
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.