• [转]Gridview自定义排序且显示上下箭头


    实现功能:单击Gidview列名按该列升序或降序排列,且在排序列上显示向上来向下箭头示意图片

            //设置Gridview的AllowSorting属性值为true,即允许排序
            <asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="False" EmptyDataText="没有相关记录!" AllowSorting="True" OnSorting="gridview1_Sorting" OnRowCreated="gridview1_RowCreated" >
            </asp:GridView>

            //为要排序的列加上SortExpression属性,其值为绑定的字段,如:
            <asp:BoundField DataField="ID" HeaderText="序号" SortExpression="ID">

            //添加Sorting和RowCreated事件
            <asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="False" EmptyDataText="没有相关记录!" AllowSorting="True" OnSorting="gridview1_Sorting" OnRowCreated="gridview1_RowCreated" >
            </asp:GridView>

           后台代码,创建如下方法:

             //设置默认表达式和排序顺序,放到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

  • 相关阅读:
    02-27 朴素贝叶斯
    JQuery UI datepicker 使用方法(转)
    纯CSS兑现侧边栏/分栏高度自动相等(转)
    在触屏设备上面利用html5裁剪图片(转)
    简单几步让CentOS系统时间同步(转)
    百度与谷歌地图坐标转换代码(转)
    jQuery插件开发全解析(转)
    Centos 安装ImageMagick 与 imagick for php步骤详解
    将windows目录共享到linux
    Event事件的兼容性(转)
  • 原文地址:https://www.cnblogs.com/zhangzt/p/1651296.html
Copyright © 2020-2023  润新知