首页 > 开发 > 综合 > 正文

DataGrid 中双向排序的一种办法

2024-07-21 02:22:54
字体:
来源:转载
供稿:网友

在.net 中 datagrid 虽然有排序的功能,但并不支持双向的排序。用到了,看了些相关的帖子,自己尝试了一种方法,竟然也行得通,呵呵

主要是用datagrid.attributes 存了一个参数,同时在onsortcommand中修改了datagridcolumn的sortexpression. 代码如下:

private void binddata()
{
datatable dt = .......;
if(dt != null)
{
dataview dv = dt.defaultview;
if(datagrid1.attributes["sortby"] != null)
{
dv.sort = datagrid1.attributes["sortby"];
}

datagrid1.datasource = dv;
datagrid1.databind();
}
}

private void datagridsort(object source, system.web.ui.webcontrols.datagridsortcommandeventargs e)
{
datagrid1.attributes["sortby"] = sortstr;
this.binddata();

//找到排序的列,并修改把它的排序属性

datagridcolumn clm = null;

for(int i=0;i<datagrid1.columns.count;i++)
{
if(datagrid1.columns[i].sortexpression == e.sortexpression )
{
clm = datagrid1.columns[i];
break;
}
}

if(clm == null) return;

if(e.sortexpression.tolower().indexof("desc") > 0)
{
clm.sortexpression = e.sortexpression.tolower().replace("desc","asc");
}
else
{
if(e.sortexpression.tolower().indexof("asc") > 0)
{
clm.sortexpression = e.sortexpression.tolower().replace("asc","desc");
}
else
{
clm.sortexpression = e.sortexpression.tolower() + " desc";
}
}
}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表