欢迎光临
我们一直在努力

ASP.NET中实现DataGrid数据排序(2)-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

四.使用dataview实现datagrid数据排序:

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

  1. 把visual stuido .net当前窗口切换到webform的设计界面,并设定datagrid1组件的”allowsorting”属性值为”true”。则此时的datagrid1组件的列头就多了一个超链接。并且在单击此超链接时,返回列头的显示的字符串。dataview就是根据这个返回的字符串来实现datagrid的数据排序的。图05是设定datagrid1的”allowsorting”属性值为”true”后,在webform中的模样:

ASP.NET中实现DataGrid数据排序(2)-.NET教程,Asp.Net开发
图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进行升、级序排列时的运行界面:

ASP.NET中实现DataGrid数据排序(2)-.NET教程,Asp.Net开发
图06:以”生日” 对datagrid中的数据进行升序排列

ASP.NET中实现DataGrid数据排序(2)-.NET教程,Asp.Net开发
图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组件中的表头提示内容。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP.NET中实现DataGrid数据排序(2)-.NET教程,Asp.Net开发
分享到: 更多 (0)