asp.net – Gridview在分页后不维护排序
发布时间:2020-12-16 09:50:45 所属栏目:asp.Net 来源:网络整理
导读:我从类似帖子中找到的有关此问题的所有帮助都不适用于我如何设置GridView. 我已经让我的Gridview拥有动态创建的列,并且能够对其进行排序.我的分页也可以,但是如果我先排序然后转到另一个页面,它就会失去排序. 在我的Paging方法中需要更改什么来记住排序? 这
我从类似帖子中找到的有关此问题的所有帮助都不适用于我如何设置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 排序和分页工作,我只是不确定我必须在我的分页方法中更改以记住排序.谢谢你的帮助! 解决方法
这是一个完整的示例代码,包括分页,排序和数据绑定:
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- VS2017中使用组合项目_windows服务+winform管理_项目发布_测
- ASP.NET MVC强类型视图编译错误
- 如何在我的ASP.NET应用程序中创建“通用错误”页面,以便它处
- asp.net – 有没有办法隐藏架构或至少从Sql Server Managem
- datetime – 将时间转换为UTC vbScript
- 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
- asp.net-mvc – 与Microsoft HTTP Client Libraries v2.1.1
- asp.net – Request.Browser.Platform不返回iPad,OSX或Wind
- asp.net-mvc – MiniProfiler与EF“模型第一”edmx模型
- asp.net-mvc-3 – 带有EF 4.1和EntityState.Modified的MVC3
推荐文章
站长推荐
- asp.net – 优雅地停止fastcgi-mono-server,网站
- ASP.NET Core 依赖注入基本用法
- asp.net – 我有多个用户,我可以锁定网页,以便一
- 当菜单项被禁用时,如何将VS Profiler 2012附加到
- asp.net – 日期字段不会在Chrome浏览器中显示该
- asp.net-mvc – 使用DataAnnotations与ASP.Net M
- asp.net-mvc – asp.net mvc – 视图中的命名空间
- asp.net-web-api – 带协议缓冲区的ASP.NET WebA
- asp.net-mvc – ASP.NET MVC:奇怪的POST行为
- asp.net – System.Net.Cookie和System.Web.Http
热点阅读