分享
 
 
 

ASP.NET中实现DataGrid数据排序

王朝asp·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

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

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

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

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

(1).视窗2000高级服务器版

(2).Visual Studio .Net中文正式版,.Net FrameWork SDK版本号3705

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

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

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

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

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

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

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

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

1. 启动Visual Studio .Net。

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

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

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

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

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

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

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

8. 设定DataGrid1的字体大小为"X-Small"。此时的DataGrid1为图03所示:

图03:设计后的DataGrid组件样式

9. 把Visual Studio .Net的当前窗口切换到WebForm的代码编辑窗口,即:WebForm1.aspx.cs文件的编辑窗口。

10. 在WebForm1.aspx.cs文件首部,用下列代码替换WebForm1.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 ;11. 在WebForm1.aspx.cs文件的Page_Load事件代码区添加下列代码,下列代码是实现DataGrid组件的数据绑定:SqlConnection sqlConnection1 = new SqlConnection ( "Server = localhost ; Database = NorthWind ; User ID = sa ; Password = ; " ) ;//定义数据库连接DataSet dataSet1 ;//创建数据集对象SqlDataAdapter sqlDataAdapter1 ;sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号 , LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees" , sqlConnection1 ) ;//以定义的数据库连接来初始化SqlDataAdapter实例dataSet1 = new DataSet ( ) ;sqlDataAdapter1.Fill ( dataSet1 , "employee" ) ;//以SqlDataAdapter实例来填充本地DataSet数据集DataView dataView1 = dataSet1.Tables [ "employee" ].DefaultView ;DataGrid1.DataSource = dataView1 ;DataGrid1.DataBind ( ) ;//实现数据绑定

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

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

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

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

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

图05:设定"AllowSorting"属性值为"True"后的DataGrid1

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

this.DataGrid1.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler ( this.DataGrid1_SortCommand ) ;

3. 在WebForm1.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组件是否已"生日"进行升序排列

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

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

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

if ( IsPostBack == false ){Sort ( "序号" ) ;}

6. 在WebForm1.aspx.cs中的InitializeComponent过程之后,添加下列代码,下列代码是DataGrid1的SortCommand事件的处理代码:

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

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

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有