• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

ASP.NET中实现DataGrid数据排序(3)

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网      四.使用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中的数据进行降序排列
  
  

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网