|
源代码网推荐
四.使用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中的数据进行降序排列 源代码网推荐 源代码网推荐 源代码网推荐五.使用Sql语句实现DataGrid数据排序: 源代码网推荐 源代码网推荐 使用Sql语句来实现对DataGrid组件中数据排序,在操作步骤上虽然相对复杂一点,但功能相对强大一点。其主要思路就是根据DataGrid组件的不同列名,形成不同的Sql语句,从而得到不同的DataSet实例,来实现对DataGrid中数据进行相应排序。下面就在上面完成的【在ASP.NET页面中使用DataView实现DataGrid数据排序】项目基础上,加以修改从而完成使用Sql语句来实现DataGrid中数据排序。 源代码网推荐 源代码网推荐 1. 首先假设您已经成功完成上面项目,能够在ASP.NET使用DataView实现对DataGrid中数据进行排序。 源代码网推荐 源代码网推荐 2. 把Visual Stuido .Net的当前窗口切换到WebForm1.aspx.cs中,并WebForm1.aspx.cs文件的class代码区添加下列代码,下列代码是创建全局使用的实例: 源代码网推荐 源代码网推荐
public DataSet dataSet1 ; 源代码网推荐public SqlDataAdapter sqlDataAdapter1 ; | 源代码网推荐 3. 用下列代码替换WebForm1.aspx.cs中已经定义的sort过程,下面代码是重新定义sort过程,使其能够使用Sql语句实现对DataGrid中的数据进行排序: 源代码网推荐 源代码网推荐
private void Sort ( string sortString ) 源代码网推荐{ 源代码网推荐SqlConnection sqlConnection1 = new SqlConnection ( "Server = localhost ; Database = NorthWind ; User ID = sa ; Password = ; " ) ; 源代码网推荐switch ( sortString ) 源代码网推荐{ 源代码网推荐case "序号" : 源代码网推荐if ( blId ) 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 序号 ASC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blId = false ; 源代码网推荐} 源代码网推荐else 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 序号 DESC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blId = true ; 源代码网推荐} 源代码网推荐break ; 源代码网推荐case "姓氏" : 源代码网推荐if ( blLast ) 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 姓氏 ASC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blLast = false ; 源代码网推荐} 源代码网推荐else 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 姓氏 DESC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blLast = true ; 源代码网推荐} 源代码网推荐break ; 源代码网推荐case "名字" : 源代码网推荐if ( blFirst ) 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 名字 ASC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blFirst = false ; 源代码网推荐} 源代码网推荐else 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 名字 DESC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blFirst = true ; 源代码网推荐} 源代码网推荐break ; 源代码网推荐case "职务" : 源代码网推荐if ( blTitle ) 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 职务 ASC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blTitle = false ; 源代码网推荐} 源代码网推荐else 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 职务 DESC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blTitle = true ; 源代码网推荐} 源代码网推荐break ; 源代码网推荐case "生日" : 源代码网推荐if ( blBirth ) 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 生日 ASC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blBirth = false ; 源代码网推荐} 源代码网推荐else 源代码网推荐{ 源代码网推荐sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter ( "SELECT EmployeeID as 序号, LastName as 姓氏 , FirstName as 名字 , Title as 职务 , Birthdate as 生日 From Employees ORDER BY 生日 DESC" , sqlConnection1 ) ; 源代码网推荐//以定义的数据库连接来初始化SqlDataAdapter实例 源代码网推荐blBirth = true ; 源代码网推荐} 源代码网推荐break ; 源代码网推荐} 源代码网推荐dataSet1 = new DataSet ( ) ; 源代码网推荐sqlDataAdapter1.Fill ( dataSet1 , "employee" ) ; 源代码网推荐//以SqlDataAdapter实例来填充本地DataSet数据集 源代码网推荐DataGrid1.DataSource = dataSet1 ; 源代码网推荐DataGrid1.DataBind ( ) ; 源代码网推荐//实现数据绑定 源代码网推荐} | 源代码网推荐 4. 保存上面的修改步骤,这样就实现了从DataView到Sql语句实现DataGrid数据排序的转换。单击快捷键F5,就可以看到图06和图07所示界面。 源代码网推荐 源代码网推荐 六.总结: 源代码网推荐 源代码网推荐 通过以上内容的介绍,我们不仅了解、掌握了在ASP.NET页面中实现DataGrid中数据排序的二种方法,还应该了解并掌握下面内容: 源代码网推荐 源代码网推荐 1. 在ASP.NET中的DataGrid组件的数据绑定。 源代码网推荐 源代码网推荐 2. 改变ASP.NET页面中的DataGrid组件中的表头提示内容。
源代码网供稿. |