zoukankan      html  css  js  c++  java
  • 艾伟:Gridview自定义排序且显示上下箭头 狼人:

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

  • 相关阅读:
    调试cuda程序一定要细心啊 不然一个bug会折腾你2天
    XML和实体类之间相互转换(序列化和反序列化)
    C#实现实体类和XML相互转换
    C#压缩打包文件例子
    通过锁字符串达到控制并发的效果C#
    巧用Ajax的beforeSend 提高用户体验
    HTML代码在线运行工具
    .NET使用ZXing.NET生成中间带图片和不带图片的二维码
    获取电脑硬件信息 (硬盘,cpu,内存等)
    C# http请求带请求头部分
  • 原文地址:https://www.cnblogs.com/waw/p/2156821.html
Copyright © 2011-2022 走看看