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";
}
}
}