All the help that I could find from similar posts on this issue does not work for how I configured my GridView.
I got my Gridview for dynamically created columns and was able to get sorting to work on it. My paging also works, but if I sort first and then go to another page, it will lose the sort.
What do I need to change in my Paging method to remember sorting?
Here is the code for the gridview:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Dim curLastName As New BoundField curLastName.HeaderText = "Last Name" curLastName.DataField = "LastName" curLastName.SortExpression = "LastName" GridView1.Columns.Insert(0, curLastName) Dim curFirstName As New BoundField curFirstName.HeaderText = "First Name" curFirstName.DataField = "FirstName" curFirstName.SortExpression = "FirstName" GridView1.Columns.Insert(1, curFirstName) Dim dt As DataTable = GetData().Tables(0) Dim dv As New DataView(dt) GridView1.DataSource = dv GridView1.DataBind() End If End Sub Private Function GetData() As DataSet Dim connectionstr As String connectionstr = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString.ToString() Dim myConnection As New SqlConnection(connectionstr) Dim ad As New SqlDataAdapter("SELECT * FROM EmployeeList where lastname like 'wil%'", myConnection) Dim ds As New DataSet() ad.Fill(ds) Return ds End Function Public Property GridViewSortDirection() As SortDirection Get If ViewState("sortDirection") Is Nothing Then ViewState("sortDirection") = SortDirection.Ascending End If Return DirectCast(ViewState("sortDirection"), SortDirection) End Get Set(ByVal value As SortDirection) ViewState("sortDirection") = value End Set End Property Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs) Dim sortExpression As String = e.SortExpression If GridViewSortDirection = SortDirection.Ascending Then GridViewSortDirection = SortDirection.Descending SortGridView(sortExpression, "DESC") Else GridViewSortDirection = SortDirection.Ascending SortGridView(sortExpression, "ASC") End If End Sub Private Sub SortGridView(ByVal sortExpression As String, ByVal direction As String) Dim dt As DataTable = GetData().Tables(0) Dim dv As New DataView(dt) dv.Sort = sortExpression & " " & direction GridView1.DataSource = dv GridView1.DataBind() End Sub Protected Sub GridView1_PageIndexChanging(ByVal sender As [Object], ByVal e As GridViewPageEventArgs) GridView1.PageIndex = e.NewPageIndex Dim dt As DataTable = GetData().Tables(0) Dim dv As New DataView(dt) GridView1.DataSource = dv GridView1.DataBind() End Sub
Sorting and swap work, I'm just not sure what I need to change in my swap method to remember sorting. Thanks for any help!
source share