GridView控件不维护传呼后排序 [英] Gridview not maintaining sort after paging
问题描述
所有的帮助下,我已经能够从关于这个问题的相近岗位找不工作,因为我怎么设置我的GridView的。
All the help I've been able to find from similar posts regarding this issue isn't working for how I set up my GridView.
我已经得到我的GridView有动态创建列,并且能够得到分类进行这项工作。我的传呼作品也,但如果我先排序,然后去到另一个网页,它失去的那种。
I've gotten my Gridview to have dynamically created columns, and was able to get sorting to work on it. My paging works also, but if I sort first and then go to another page, it loses the sort.
我需要什么,我寻呼的方法来记住的那种改变?
What do I need to change in my Paging method to remember the sort?
下面是code为GridView:
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
排序和分页的工作,我只是不知道我在我的寻呼方法要记住的那种改变。感谢您的帮助!
The sorting and paging work, I'm just not sure what I have to change in my paging method to remember the sort. Thanks for any help!
推荐答案
下面是一个完整的示例code,包括分页,排序和数据绑定:
Here's a complete sample code including paging,sorting and databinding:
Sub Page_load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
CreateGridColumns()
BindGrid()
End If
End Sub
Public Property SortExpression As String
Get
If ViewState("SortExpression") Is Nothing Then
ViewState("SortExpression") = "LastName ASC"
End If
Return ViewState("SortExpression").ToString
End Get
Set(value As String)
ViewState("SortExpression") = value
End Set
End Property
Private Sub CreateGridColumns()
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)
End Sub
Private Sub BindGrid()
Try
Dim tblData = New DataTable
Using sqlCon As New SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString.ToString())
Dim sql As String = "SELECT * FROM EmployeeList ORDER BY {0}"
Dim sqlCmd = New SqlClient.SqlCommand()
sqlCmd.CommandText = String.Format(sql, Me.SortExpression)
sqlCmd.Connection = sqlCon
Using objAdapter As New SqlClient.SqlDataAdapter(sqlCmd)
objAdapter.Fill(tblData)
End Using
End Using
GridView1.DataSource = tblData
GridView1.DataBind()
Catch ex As Exception
' TODO: log error '
throw
End Try
End Sub
Private Sub GridView1_PageIndexChanging(sender As Object, e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
Me.GridView1.PageIndex = e.NewPageIndex
BindGrid()
End Sub
Private Sub GridView1_Sorting(sender As Object, e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
Dim currentSortColumn, currentSortDirection As String
currentSortColumn = Me.SortExpression.Split(" "c)(0)
currentSortDirection = Me.SortExpression.Split(" "c)(1)
If e.SortExpression.Equals(currentSortColumn) Then
' switch sort direction '
Select Case currentSortDirection.ToUpper
Case "ASC"
Me.SortExpression = currentSortColumn & " DESC"
Case "DESC"
Me.SortExpression = currentSortColumn & " ASC"
End Select
Else
Me.SortExpression = e.SortExpression & " ASC"
End If
BindGrid()
End Sub
这篇关于GridView控件不维护传呼后排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!