ASP.NET-Gridview中动态数据源的排序问题

本文介绍在ASP.NET项目中,如何为使用动态数据源的GridView控件手动实现排序功能。通过处理GridView的Sorting事件并利用ViewState保存排序状态,可以有效地完成这一任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASP.NET-Gridview中动态数据源的排序问题 

在asp.net的应用项目中,大部分的页面都是使用控件实现,gridview是最常用的数据组建之一,他可以使用静态的数据源例如 objecdatasource,可以很方便的实现分页,排序等功能,但有时因为项目的需要 ,程序中会使用动态的数据源如,datatable或dataview,这样分页排序等功能就要手工实现了,这里介绍下如何手工简单实现排序!

首先要实现GridView的Sorting事件 否则GridView会报错:GridView 激发了未处理的事件“Sorting”。

以下是简单的实现代码 

 protected void gvDeliveryNoteList_Sorting(object sender, GridViewSortEventArgs e)
        {
            this.gvDeliveryNoteList.EditIndex = -1;  

            if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())//判断viewstate中的排序字段,在这之前要在page_load里初始化 ViewState["sortColumn"]与ViewState["sortDirection"]
            {
                if ("ASC" == ViewState["sortDirection"].ToString())
                {
                    ViewState["sortDirection"] = "DESC";
                }
                else
                {
                    ViewState["sortDirection"] = "ASC";
                }  

            }
            else
            {
                ViewState["sortColumn"] = e.SortExpression.ToString();
                ViewState["sortDirection"] = "ASC";
            }

           //这里是关键,如果你使用dataview作为数据源,那可以直接多结果集进行排序,否则你要转换以下

            //this.gvDeliveryNoteList.DataSource = (DataTable)ViewState["dt"];
            DataTable dt = (DataTable)ViewState["dt"];
            DataView dw = dt.DefaultView;

            //增加排序字段
            dw.Sort = Convert.ToString(ViewState["sortColumn"]) + " " + Convert.ToString(ViewState["sortDirection"]);
            this.gvDeliveryNoteList.DataSource=dw;
            this.gvDeliveryNoteList.DataBind();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值