`
happmaoo
  • 浏览: 4336810 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Asp.NET的DataGrid排序,选择和分页

阅读更多

DataGrid是Asp.NET中的一个重要的控件,经常我们都将DataGrid做成可分页的和可排序的,有时还需要加上选择功能。这些都是经常需要用到的方法,其实是比较简单的。

  设计思路:

  为了方便起见,我们连接SQL Server 2000的NorthWind数据库的Orders表,从数据库里得到此表的数据视图。利用DataGrid的SortCommand事件实现排序。用一个模板列加上CheckBox控件实现选择。可用DataGrid的属性生成器的“分页”选项或者自己修改HTML实现分页。

  HTML:

  添加一个DataGrid,命名为dgOrder。

  添加了一个模板列,模板列里放一个名为Cb的CheckBox控件。此列用来实现选择

  为要排序的每个列加上排序表达式SortExpression。

  利用列的DataFormatString来格式化列,象DataFormatString="{0:d}"显示日期格式。

  设置PageSize="15"每页显示15行数据,AllowPaging="True" 为允许分页 。

  ield="orderid" SortExpression="orderid" HeaderText="ID">  

  后台类添加以下代码:


Imports System.Data.SqlClient

  '得到数据视图,参数为要排序的列

  Private Function GetDv(ByVal strSort As String) As DataView

  '定义数据库连接

  Dim dv As DataView

  Dim CN As New SqlConnection()

  Try

  '初始化连接字符串

  CN.ConnectionString = "data source=pmserver;initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;"

  CN.Open()

  '从NorthWind得到orders表的数据

  Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)

  Dim ds As New DataSet()

  adp.Fill(ds)

  '得到数据视图

  dv = ds.Tables(0).DefaultView

  Catch ex As Exception

  #If DEBUG Then

  Session("Error") = ex.ToString()

  Response.Redirect("../error.aspx") '跳转程序的公共错误处理页面

  #End If

  Finally

  '关闭连接

  CN.Close()

  End Try

  '排序

  dv.Sort = strSort

  Return dv

  End Function

  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  If Not IsPostBack Then

  ViewState("strSort") = "orderid"

  dgOrder.DataSource = GetDv(ViewState("strSort").ToString())

  dgOrder.DataBind()

  End If

  End Sub

  '排序

  Private Sub dgOrder_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand

  dgOrder.CurrentPageIndex = 0

  '得到排序的列

  ViewState("strSort") = e.SortExpression.ToString()

  dgOrder.DataSource = GetDv(ViewState("strSort").ToString())

  dgOrder.DataBind()

  End Sub

  '分页

  Private Sub dgOrder_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged

  '得到分页的页号

  dgOrder.CurrentPageIndex = e.NewPageIndex

  dgOrder.DataSource = GetDv(ViewState("strSort").ToString())

  dgOrder.DataBind()

  End Sub

  运行结果如下图所示:(点击列标头可以排序)

  

图例

  为了知道用户选择的是哪些记录,我们可以利用DataGridItem的FindControl得到CheckBox的值,我们来添加一个按钮,再写如下代码: 

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  

  Dim item As DataGridItem 

  Dim StrScript As String  

  StrScript = " alert('"

  '循环表格的项,FindControl

  For Each item In Me.dgOrder.Items

  If CType(item.FindControl("cb"), System.Web.UI.WebControls.CheckBox).Checked Then

  Try

  StrScript += item.Cells(1).Text & Space(2)

  Catch ex As Exception

  End Try

  End If

  Next

  StrScript += "被选择!') "

  RegisterClientScriptBlock("系统消息", StrScript)

  End Sub

  上面的代码RegisterClientScriptBlock添加Java Script脚本弹出对话框。(其实Vb Script的对话框比Java Script的对话框多更多的显示和控制方式,但Netscape的浏览器不支持,大家可根据相应的项目在程序里选择用哪种脚本)。

   图例

  总结:

  DataGrid是我们常用的Web 控件,有时我们还可以和DataList混合使用,通过修改HTML页,可以达到好的页面效果。上面只是一个例子,为了便于清楚整个过程,我把数据访问部分(SQL)写到了页面中。在软件开发中,我们一般把访问数据的部分写成数据层,页面调用数据层得到数据,这样逻辑清晰,修改和维护都很方便。
分享到:
评论

相关推荐

    让Asp.NET的DataGrid可排序、可选择、可分页

    让Asp.NET的DataGrid可排序、可选择、可分页

    ASP.NET常见问题集锦.zip

    ASP.NET中实现DataGrid数据排序.doc asp.net中的弹出对话框.doc ASP.NET中自定义控件的创建和使用.doc ASP.NET实现用户在线检测的类源码.txt ASP.NET常见问题集锦.zip ASP.NET弹出式日历选择控件的实现.doc ...

    datagrid排序_选择_分页

    datagrid排序_选择_分页! 很值得下载看看!资源免费,大家分享!!

    ASP.NET 分页 二 支持 排序

    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { DataGrid1.CurrentPageIndex = e.NewPageIndex ; BindGrid(e.NewPageIndex ); ...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    有的网友说,不会C#,在ASP.NET里面还是选择VB.NET,这个我不反对,但是我觉得既然是学习新的东西,就不要在意有多少是新的。实际上C#就一般的操作来说,只是区分大小写和多了一个分号这两点与VB.NET不同其他都...

    asp.net知识库

    利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...

    asp.net专家疑难解答200问

    如何在网页中使用Calendar Web控件显示和选择日期 83.如何在Calendar Web控件中控制个别日的内容及显示 84.如何在Calendar Web控件中控制用户日期选定 86.如何使用XML控件显示XML文件和进行XSLT转换 ...

    Ajax+JQuery 封装的Asp.NET版DataGrid控件

    .NET源码,控件组件,GridView,DataGrid Ajax+JQuery 版DataGrid控件,GridView数据显示比较不错的选择,本控件含源代码,JQuery的引入使其功能更加人性化,比如可以拖动改变列宽,双击标头排序,无刷新分页等,...

    asp.net技术内幕(1)

    11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑DataGrid控件中的条目 11.3.7 使用模板...

    ASP.net技术内幕

    11.3.1 在DataGrid控件中创建列 11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑...

    asp.net专家疑难解答200问源码

    82.如何在网页中使用Calendar Web控件显示和选择日期 83.如何在Calendar Web控件中控制个别日的内容及显示 84.如何在Calendar Web控件中控制用户日期选定 86.如何使用XML控件显示XML文件和进行XSLT转换 87.如何...

    asp.net技术内幕(5)

    11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑DataGrid控件中的条目 11.3.7 使用模板...

    asp.net技术内幕(4)

    11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑DataGrid控件中的条目 11.3.7 使用模板...

    asp.net技术内幕(3)

    11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑DataGrid控件中的条目 11.3.7 使用模板...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存...

    asp.net技术内幕(2)

    11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑DataGrid控件中的条目 11.3.7 使用模板...

    .net技术资料大全(语言规范 源码教程 学习笔记 技术资料 .net代码生成器)

    datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存...

    asp.net中将某字符串切割成阵列并排序列出

    代码如下: protected void Page_Load(object sender, EventArgs e) { string s = “a;b;d;z;y;u”; string[] sa = s.Split(‘;... 您可能感兴趣的文章:ASP.Net2.0 GridView 多列排序,显示排序图标,分页让A

    《ASP.NET与数据库程序设计》

    5-3 ASP.NET如何结合数据库 5-3-1关于ADO.NET 5-3-2与数据库无关的DataSet DataSet的内容 DateSet的来源(自行建立) DateSet的来源(取用数据库) 控制项结合DataSet 回存至来源 5-3-3...

Global site tag (gtag.js) - Google Analytics