我已经能够从类似的帖子找到关于这个问题的所有帮助是不是为我如何设置我的GridView。Gridview在分页后没有维护排序
我已经让我的Gridview具有动态创建的列,并能够进行排序来处理它。我的分页也可以,但是如果我先分页然后再转到另一页面,它就会失去这种意义。
在我的Paging方法中需要更改哪些内容才能记住排序?
这里是为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
的排序和分页的工作,我只是不知道我在我的分页方法要记住的那种改变。谢谢你的帮助!
你应该只使用一个'GetData'方法,应该把sortexpression作为参数(就像你的SortGridView一样)。这必须从PageIndexChanging和Sorting中调用(如果不是ispostback,则从page_load中调用)。 – 2012-02-19 17:14:04
感谢Tim的回应。我仍然在学习所有这些,所以我不确定如何实施这个建议。我看到SortGridView是如何得到它的参数的,但我不确定如何将值传递给每个实例的GetData。你能描述一下我需要进一步改变吗?再次感谢您的帮助 – Cineno28 2012-02-19 18:09:55