この問題に関して同様の投稿から私が見つけたすべてのヘルプは、GridViewをどのように設定するのか機能しません。Gridviewがページングの後で並べ替えを維持しない
グリッドビューに動的に作成された列を持たせ、ソートを実行できるようにしました。私のページングも機能しますが、最初にソートして別のページに行くと、ソートが失われます。
並べ替えを覚えておくために、ページング方法を変更する必要はありますか?ここで
は、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
ソートやページング仕事、私はちょうど私がソートを覚えて、私のページング方式に変更する必要がわからないんだけど。助けてくれてありがとう!
SortExpressionをパラメータとして(SortGridViewと同じように)行うGetDataメソッドを1つだけ使用してください。これは、PageIndexChangingとSorting(およびispostbackでない場合はpage_load)から呼び出される必要があります。 –
応答Timに感謝します。私はまだこのすべてを学んでいるので、私はこのアドバイスをどのように実装するのか分かりません。私はSortGridViewがどのようにパラメータを取得しているのか分かりますが、各インスタンスのGetDataに値を渡す方法がわかりません。私が少し変更する必要があることを説明できますか?助けてくれてありがとう – Cineno28