• 艾伟: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

  • 相关阅读:
    html 注释和特殊字符
    html 锚点链接
    html 链接标签
    spring 利用工厂模式解耦
    html 路径
    html 图像标签
    html div和span标签
    html 文本格式化标签
    P5358 [SDOI2019]快速查询
    luoguP2679 子串
  • 原文地址:https://www.cnblogs.com/waw/p/2156821.html
Copyright © 2020-2023  润新知