GridView用数据源控件和用DataTable作为数据源的不同
1.使用数据源控件可以自动做排序分页,不需要多余代码,可是由于自动绑定太多操作,反而觉得很不灵活
前台:
<asp:GridViewID="gv_test"DataSourceID="ds_test"AllowPaging="True" PageSize="10"runat="server">
...
</asp:GridView>
<asp:SqlDataSource runat="server" ID="ds_test" SelectCommand="select * from test" ConnectionString="...">
2.使用DataTable为数据源会发现排序,分页包括修改,取消等操作都需要手动实现
<asp:GridView ID="gv_test" runat="server" OnRowCommand="gv_test_RowCommand" OnRowUpdating="gv_test_RowUpdating" OnRowEditing ="gv_test_RowEditing" OnRowCancelingEdit ="gv_test_RowCancelingEdit" OnPageIndexChanging ="gv_test_PageIndexChanging" AllowPaging="True" PageSize="10" AllowSorting="True" >
...
</asp:GridView >
后台:Page_Load: gv_test.SortExpression总是为空,只好将排序字符串储存在新建的属性里gv_test.Attributes.Add("Sort", "lastUpdateDate desc")Protected Sub bind()gv_test.DataSource = getDataTable_bySQL("select * from test order by "+gv_test.Attributes("Sort")) gv_test.DataBind()End Sub DataView比DatatTable功能强大些,可以拿到数据后进行排序。当SQL Server的ntext列不支持order by时候,用DataView可以解决问题,如下:Protected Sub bind()gv_test.DataSource = getDataTable_bySQL("select * from test")Dim dv As DataView = New DataView(getTableData_bySQL("select * from test"))dv.Sort=gv_test.Attributes("Sort")
gv_test.DataSource=dv gv_test.DataBind()End SubProtected Sub gv_test_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs) Handles gv_test.Sorting gv_test.EditIndex = -1 If gv_test.Attributes("Sort") = e.SortExpression + " desc" Then gv_test.Attributes("Sort") = e.SortExpression Else gv_test.Attributes("Sort") = e.SortExpression + " desc" End If bind() End Sub Protected Sub gv_test_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) gv_test.PageIndex = e.NewPageIndex gv_test.EditIndex = -1 bind() End Sub Protected Sub gv_test_RowCancelingEdit(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) gv_test.EditIndex = -1 bind() End Sub Protected Sub gv_test_RowUpdating(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gv_test.RowUpdating gv_test.EditIndex = -1 End Sub Public Sub gv_test_RowEditing(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) gv_test.EditIndex = e.NewEditIndex bind() End Sub
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!