艾伟:Gridview自定义排序且显示上下箭头

简介: 实现功能:单击Gidview列名按该列升序或降序排列,且在排序列上显示向上来向下箭头示意图片        //设置Gridview的AllowSorting属性值为true,即允许排序        AllowSorting="True" OnSorting="gridview1...

        实现功能:单击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

目录
相关文章
|
6月前
|
索引
[Qt5&控件] 下拉框ComBoBox和层叠窗口StackedWidget控件组合使用
[Qt5&控件] 下拉框ComBoBox和层叠窗口StackedWidget控件组合使用
157 0
Devexpress lookupedit赋值后不显示第一项
Devexpress lookupedit赋值后不显示第一项
swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件
swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件
256 0
swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件
PyQt5 技术篇-QTableWidget表格组件的行选择与列选择实例演示,表格组件的双击事件捕获,获取表格选中单元格的值
PyQt5 技术篇-QTableWidget表格组件的行选择与列选择实例演示,表格组件的双击事件捕获,获取表格选中单元格的值
1203 0
PyQt5 技术篇-QTableWidget表格组件的行选择与列选择实例演示,表格组件的双击事件捕获,获取表格选中单元格的值
|
C++ 索引
详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等(2)
详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等
2529 0
详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等(2)
详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等(1)
详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等
1437 0
详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等(1)