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

目录
相关文章
|
存储 Web App开发 人工智能
『GitHub项目圈选18』推荐5款本周 超实用 的开源项目
『GitHub项目圈选18』推荐5款本周 超实用 的开源项目
980 1
|
人工智能 缓存 调度
技术改变AI发展:RDMA能优化吗?GDR性能提升方案(GPU底层技术系列二)
随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。GPUDirect RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项技术,可以让使用pcie标准的gpu和第三方设备进行直接的数据交换,而不涉及CPU。
138223 6
|
前端开发
【前端】elementUI表格根据状态显示不同的字体颜色
【前端】elementUI表格根据状态显示不同的字体颜色
612 1
手机网站支付quit_url参数详解
一、quit_url参数说明   quit_url参数是手机网站支付用于在H5页面收银台中添加返回按钮的,但是该参数只有在支付的时候唤起H5收银台才会生效,对于唤起支付宝钱包支付是不生效的。 二、传参以及调用示例   传值代码示例: AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.
2986 0
【verilog】同步复位,异步复位以及异步复位同步释放
该文讨论了数字电路设计中触发器复位机制的三种类型:同步复位、异步复位和异步复位同步释放。同步复位在时钟边沿确保稳定性,但对复位脉冲宽度有要求;异步复位响应快速,但可能受干扰且时序不确定;异步复位同步释放则结合两者的优点。设计时需根据需求权衡选择。文中还给出了Verilog代码示例。
|
9月前
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
197 10
|
存储 算法 索引
HashMap底层数据结构及其增put删remove查get方法的代码实现原理
HashMap 是基于数组 + 链表 + 红黑树实现的高效键值对存储结构。默认初始容量为16,负载因子为0.75。当存储元素超过容量 * 负载因子时,会进行扩容。HashMap 使用哈希算法计算键的索引位置,通过链表或红黑树解决哈希冲突,确保高效存取。插入、获取和删除操作的时间复杂度接近 O(1)。
239 0
[Eigen中文文档] 编写以特征类型为参数的函数(一)
Eigen使用表达式模板的方式导致每个表达式的类型可能都不同。如果将这样的表达式传递给一个需要Matrix类型参数的函数,则表达式将隐式地被评估为一个临时Matrix,然后再传递给函数。这意味着失去了表达式模板的好处。
288 0
|
机器学习/深度学习 数据采集 数据可视化
R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化(上)
R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化
|
存储 Oracle 关系型数据库
【MySQL】MySQL 发展历程和主流分支
【MySQL】MySQL 发展历程和主流分支
720 0