GridView控件不维护传呼后排序 [英] Gridview not maintaining sort after paging

查看:91
本文介绍了GridView控件不维护传呼后排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所有的帮助下,我已经能够从关于这个问题的相近岗位找不工作,因为我怎么设置我的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆