知识大全 ASP.NET中实现DataGrid数据排序

Posted

篇首语:成年人的平和,一半是理解,一半是算了。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET中实现DataGrid数据排序相关的知识,希望对你有一定的参考价值。

ASP.NET中实现DataGrid数据排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Visual Studio Net为编写WinForm程序(即 在Windows平台下运行的程序)所提供的DataGrid组件比起微软以往的各种开发环境中提供的DataGrid组件都要 高级 许多 其 高级 的地方就在于不需要再进行任何其他设置或编程 DataGrid就能够对其中的数据分别按照升 降序进行排列 这种 高级 功能给我们编程提供了许多方便 图 是在WinForm程序中的DataGrid组件按照 EmployeeID 升序进行排列时的界面

图 在WinForm程序中使用DataGrid对数据进行排序

  此时很多的朋友肯定会问这样的问题 Visual Studio Net不仅为编写WinForm程序提供了DataGrid组件 同样也为编写WebForm程序(即 ASP NET页面程序)提供了DataGrid组件 那么在WebForm中的DataGrid是否也像在WinForm中的DataGrid那样具备这样 高级 的功能?答案是 虽然微软为WebForm提供的DataGrid组件也考虑了数据排序功能 但却不像为编写WinForm程序提供的DataGrid组件在实现数据排序功能上的操作步骤那么简单 在ASP NET页面中要实现DataGrid组件的数据排序需要设定组件的某些属性和加入一些处理代码才可以实现 本文就将详细讨论一下这个问题

  一.本文中介绍的程序的设计和运行环境

  ( )视窗 高级服务器版

  ( )Visual Studio Net中文正式版 Net FrameWork SDK版本号

  二.ASP NET页面中DataGrid实现数据排序的实现原理

  在ASP NET页面中实现DataGrid的数据绑定数据排序 有二种实现方法 这二种方法有异曲同工之效 具体如下

   在实现ASP NET页面中的DataGrid组件数据绑定时 设定DataGrid组件数据源使用的是DataView DataView有一个属性 Sort 通过 Sort 属性设定此数据源以何排序和排序的方式(即升 降序) 从而实现对DataGrid中数据排序

   通过设定Sql语句 为数据绑定产生不同的DataSet 从而实现DataGrid中的数据排序

  这二种方法虽然能够实现相同的功能 但第一种方法实现较简单 但实现功能有限

  第二种方法虽然实现起来较复杂 但却可以以此实现较强大的功能 但无论那一种方法 实现DataGrid的数据绑定是首先要完成的   下面首先介绍DataGrid数据绑定的实现方法  

  三.ASP NET中DataGrid组件数据绑定实现步骤

  在ASP NET中实现DataGrid组件的数据绑定方法和在WinForm中数据绑定的方法基本相似 下面是在ASP NET实现DataGrid组件数据绑定的实现步骤

   启动Visual Studio Net

   选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框

   将【项目类型】设置为【Visual C#项目】

   将【模板】设置为【ASP NET Web 应用程序】

   在【位置】的文本框中输入 //localhost/dataGridSort 然后单击【确定】按钮 这样在Visual Studio Net就会在当前项目文件所在目录中建立一个名称为 dataGridSort 文件夹 里面存放是此项目的项目文件 项目中的其他文件存放的位置是IIS默认的Web站点所在的目录 具体如图 所示

图 新建一个ASP NET项目对话框

   把Visual Studio Net当前窗口切换到WebForm的设计窗口 并从【工具箱】|【Web组件】选项卡中拖入一个DataGrid组件到WebForm的设计窗口 名称为DataGrid

   选中DataGrid 单击鼠标右键 在弹出的菜单中【自动套用格式】 并在弹出的【自动套用格式】对话框中的【选择方案】栏中选择【专业型 】

   设定DataGrid 的字体大小为 X Small 此时的DataGrid 为图 所示

图 设计后的DataGrid组件样式

   把Visual Studio Net的当前窗口切换到WebForm的代码编辑窗口 即 WebForm aspx cs文件的编辑窗口

   在WebForm aspx cs文件首部 用下列代码替换WebForm aspx cs中导入命名空间的代码

using System ;using System Collections ;using System ComponentModel ;using System Data ;using System Drawing ;using System Web ;using System Web SessionState ;using System Web UI ;using System Web UI WebControls ;using System Web UI HtmlControls ;using System Data SqlClient ; 在WebForm aspx cs文件的Page_Load事件代码区添加下列代码 下列代码是实现DataGrid组件的数据绑定 SqlConnection sqlConnection = new SqlConnection ( Server = localhost ; Database = NorthWind ; User ID = sa ; Password = ; ) ;//定义数据库连接DataSet dataSet ;//创建数据集对象SqlDataAdapter sqlDataAdapter ;sqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例dataSet = new DataSet ( ) ;sqlDataAdapter Fill ( dataSet employee ) ;//以SqlDataAdapter实例来填充本地DataSet数据集DataView dataView = dataSet Tables [ employee ] DefaultView ;DataGrid DataSource = dataView ;DataGrid DataBind ( ) ;//实现数据绑定

   在上述步骤都正确执行后 实现DataGrid数据绑定的全部工作就完成了 如果你使用的是其他类型数据库 只需对对第十一步骤介绍的代码中的定义数据连接加以相应的修改就可以了 请各位读者注意上述代码中设定DataGrid的中文标头的实现方法 此时单击快捷键F 就可以得到如下界面

图 在ASP NET页面中DataGrid实现数据绑定时的界面

  四.使用DataView实现DataGrid数据排序

  下面就来介绍在上面介绍的项目基础上使用DataView实现项目中的DataGrid的数据排序 以下面是在上述项目基础上实现DataGrid数据排序的步骤

   把Visual Stuido Net当前窗口切换到WebForm的设计界面 并设定DataGrid 组件的 AllowSorting 属性值为 True 则此时的DataGrid 组件的列头就多了一个超链接 并且在单击此超链接时 返回列头的显示的字符串 DataView就是根据这个返回的字符串来实现DataGrid的数据排序的 图 是设定DataGrid 的 AllowSorting 属性值为 True 后 在WebForm中的模样

图 设定 AllowSorting 属性值为 True 后的DataGrid

   把Visual Studio Net的当前窗口切换到WebForm aspx cs的代码编辑窗口 并在WebForm aspx cs的InitializeComponent过程中添加下列代码 下列代码是定义DataGrid 的 SortCommand 事件 此事件是在单击DataGrid 列头的超链接时被触发

this DataGrid SortCommand += new System Web UI WebControls DataGridSortCommandEventHandler ( this DataGrid _SortCommand ) ;

   在WebForm aspx cs的class代码区中添加下列代码 下列代码是定义全局变量 请注意下面定义的变量都是Static类型的

public static bool blId = true ;//用以标识DataGrid组件是否已 序号 进行升序排列public static bool blLast = false ;//用以标识DataGrid组件是否已 姓氏 进行升序排列public static bool blFirst=false ;//用以标识DataGrid组件是否已 名字 进行升序排列public static bool blTitle= false ;//用以标识DataGrid组件是否已 职位 进行升序排列public static bool blBirth =false ;//用以标识DataGrid组件是否已 生日 进行升序排列 

   在WebForm aspx cs中的Page_Load事件处理代码后 添加下列代码 下列代码是定义sort过程 此过程的功能是根据选择不同的列 实现对此列数据的升级序排列

private void Sort ( string sortString )SqlConnection sqlConnection = new SqlConnection ( Server = localhost ; Database = NorthWind ; User ID = sa ; Password = ; ) ;//定义数据库连接DataSet dataSet ;//创建数据集对象SqlDataAdapter sqlDataAdapter ;sqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例dataSet = new DataSet ( ) ;sqlDataAdapter Fill ( dataSet employee ) ;//以SqlDataAdapter实例来填充本地DataSet数据集DataView dataView = dataSet Tables [ employee ] DefaultView ;switch ( sortString )case 序号 :if ( blId )dataView Sort = 序号 DESC ;blId = false ;elsedataView Sort = 序号 ASC ;blId = true ;break ;case 姓氏 :if ( blLast )dataView Sort = 姓氏 DESC ;blLast = false ;elsedataView Sort = 姓氏 ASC ;blLast = true ;break ;case 名字 :if ( blFirst )dataView Sort = 名字 DESC ;blFirst = false ;elsedataView Sort = 名字 ASC ;blFirst = true ;break ;case 职务 :if ( blTitle )dataView Sort = 职务 DESC ;blTitle = false ;elsedataView Sort = 职务 ASC ;blTitle = true ;break ;case 生日 :if ( blBirth )dataView Sort = 生日 DESC ;blBirth = false ;elsedataView Sort = 生日 ASC ;blBirth = true ;break ;DataGrid DataSource = dataView ;DataGrid DataBind ( ) ;//实现数据绑定

   清除WebForm aspx cs中Page_Load事件处理代码区中的所有代码后 并在Page_Load事件处理代码区中添加下列下列代码 下列代码是判断此Web页面是否是第一次加载 如果判断为 True 则对其中的DataGrid 中的数据按照 序号 列名进行升序排列

if ( IsPostBack == false ) Sort ( 序号 ) ;

   在WebForm aspx cs中的InitializeComponent过程之后 添加下列代码 下列代码是DataGrid 的SortCommand事件的处理代码

private void DataGrid _SortCommand ( object source System Web UI WebControls DataGridSortCommandEventArgs e )string sColName = e SortExpression ;//获得列名Sort ( sColName ) ;//以此列名 并根据当前排序情况进行相应排序

   在上述步骤都正确执行后 第一种在ASP NET实现DataGrid中数据排序的方法就介绍完成了 此时单击快捷键F 就可以运行程序 图 和图 分别程序按照 生日 对DataGrid进行升 级序排列时的运行界面

图 以 生日 对DataGrid中的数据进行升序排列

图 以 生日 对DataGrid中的数据进行降序排列

  五.使用Sql语句实现DataGrid数据排序

  使用Sql语句来实现对DataGrid组件中数据排序 在操作步骤上虽然相对复杂一点 但功能相对强大一点 其主要思路就是根据DataGrid组件的不同列名 形成不同的Sql语句 从而得到不同的DataSet实例 来实现对DataGrid中数据进行相应排序 下面就在上面完成的【在ASP NET页面中使用DataView实现DataGrid数据排序】项目基础上 加以修改从而完成使用Sql语句来实现DataGrid中数据排序

   首先假设您已经成功完成上面项目 能够在ASP NET使用DataView实现对DataGrid中数据进行排序

   把Visual Stuido Net的当前窗口切换到WebForm aspx cs中 并WebForm aspx cs文件的class代码区添加下列代码 下列代码是创建全局使用的实例

public DataSet dataSet ;public SqlDataAdapter sqlDataAdapter ;

   用下列代码替换WebForm aspx cs中已经定义的sort过程 下面代码是重新定义sort过程 使其能够使用Sql语句实现对DataGrid中的数据进行排序

private void Sort ( string sortString )SqlConnection sqlConnection = new SqlConnection ( Server = localhost ; Database = NorthWind ; User ID = sa ; Password = ; ) ;switch ( sortString )case 序号 :if ( blId )sqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 序号 ASC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blId = false ;elsesqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 序号 DESC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blId = true ;break ;case 姓氏 :if ( blLast )sqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 姓氏 ASC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blLast = false ;elsesqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 姓氏 DESC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blLast = true ;break ;case 名字 :if ( blFirst )sqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 名字 ASC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blFirst = false ;elsesqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 名字 DESC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blFirst = true ;break ;case 职务 :if ( blTitle )sqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 职务 ASC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blTitle = false ;elsesqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 职务 DESC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blTitle = true ;break ;case 生日 :if ( blBirth )sqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 生日 ASC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blBirth = false ;elsesqlDataAdapter = new System Data SqlClient SqlDataAdapter ( SELECT EmployeeID as 序号 LastName as 姓氏 FirstName as 名字 Title as 职务 Birthdate as 生日 From Employees ORDER BY 生日 DESC sqlConnection ) ;//以定义的数据库连接来初始化SqlDataAdapter实例blBirth = true ;break ;dataSet = new DataSet ( ) ;sqlDataAdapter Fill ( dataSet employee ) ;//以SqlDataAdapter实例来填充本地DataSet数据集DataGrid DataSource = dataSet ;DataGrid DataBind ( ) ;//实现数据绑定

   保存上面的修改步骤 这样就实现了从DataView到Sql语句实现DataGrid数据排序的转换 单击快捷键F 就可以看到图 和图 所示界面

  六.总结

  通过以上内容的介绍 我们不仅了解 掌握了在ASP NET页面中实现DataGrid中数据排序的二种方法 还应该了解并掌握下面内容

   在ASP NET中的DataGrid组件的数据绑定   

cha138/Article/program/net/201311/15768

相关参考

知识大全 Asp.net中DataGrid控件的自定义分页

Asp.net中DataGrid控件的自定义分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 在asp.net 中实现维护数据缓存

在项目中我们经常会用到数据缓存也会在项目处理对缓存的维护但是有些时间我们需要人为的来维护这些缓存用下面的代码来实现   将缓存信息绑定到DataGrid上   privatevoidbindCache

知识大全 asp.net中显示DataGrid控件列序号的几种方法

asp.net中显示DataGrid控件列序号的几种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 ASP.NET中的DataGrid的属性

ASP.NET中的DataGrid的属性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Asp.NET自定义DataGrid控件

Asp.NET自定义DataGrid控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一&nb

知识大全 ASP.NET中为DataGrid添加合计字段

ASP.NET中为DataGrid添加合计字段  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  论

知识大全 一个ASP.Net的DataGrid分页控件

一个ASP.Net的DataGrid分页控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  写的

知识大全 ASP.NET中为DataGrid添加单选框

ASP.NET中为DataGrid添加单选框  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 asp.net中将DataGrid的内容导出为excel文件

asp.net中将DataGrid的内容导出为excel文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET中自定义DataGrid分页设置的实现

ASP.NET中自定义DataGrid分页设置的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!