艾伟:Gridview自定义排序且显示上下箭头
2011-08-28 23:56 狼人:-) 阅读(283) 评论(0) 编辑 收藏 举报实现功能:单击Gidview列名按该列升序或降序排列,且在排序列上显示向上来向下箭头示意图片
//设置Gridview的AllowSorting属性值为true,即允许排序
AllowSorting="True" OnSorting="gridview1_Sorting" OnRowCreated="gridview1_RowCreated" >
//为要排序的列加上SortExpression属性,其值为绑定的字段,如:
SortExpression="ID">
//添加Sorting和RowCreated事件
OnSorting="gridview1_Sorting" OnRowCreated="gridview1_RowCreated" >
后台代码,创建如下方法:
//设置默认表达式和排序顺序,放到page_load事件中
public void SetSorting()
{
ViewState["SortExpression"] = "ID";
ViewState["SortDirection"] = SortDirection.Descending;
}
//获取排序列索引
private int GetSortColumnIndex()
{
foreach (DataControlField field in gridview1.Columns)
{
if (field.SortExpression == ViewState["SortExpression"].ToString().Trim())
return gridview1.Columns.IndexOf(field);
}
return -1;
}
//添加排序图片
private void AddSortImage(int columnIndex, GridViewRow headerRow)
{
Image sortImage = new Image();
if ((SortDirection)ViewState["SortDirection"] == SortDirection.Ascending)
{
sortImage.ImageUrl ="向上箭头图片的路径";
}
else
{
sortImage.ImageUrl = "向下箭头图片的路径";
}
headerRow.Cells[columnIndex].Controls.Add(sortImage);
}
//Gridview的Sorting事件
protected void gridview1_Sorting(object sender, GridViewSortEventArgs e)
{
if (ViewState["SortExpression"].ToString().Trim() == e.SortExpression)
{
if ((SortDirection)ViewState["SortDirection"] == SortDirection.Ascending)
ViewState["SortDirection"] = SortDirection.Descending;
else
ViewState["SortDirection"] = SortDirection.Ascending;
}
else
{
ViewState["SortExpression"] = e.SortExpression;
ViewState["SortDirection"] = SortDirection.Descending;
}
//你绑定Gridview数据的函数
GvBind();
}
//Gridview的RowCreated事件
protected void gridview1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
int sortColumnIndex = GetSortColumnIndex();
if (sortColumnIndex != -1)
AddSortImage(sortColumnIndex, e.Row);
}
}
最后,还要修改GvBind()函数中的SQL语句
//将SortDirection转化为SQL语句中的ASC和DESC
string sortStr = ((SortDirection)ViewState["SortDirection"] == SortDirection.Descending ? "DESC" : "");
在原SQL语句后加上order by语句: "order by "+ ViewState["SortExpression"]+" "+sortStr
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述