Linq学习——gridview实现双向排序

本文介绍了如何在ASP.NET中使用Linq实现GridView的双向排序功能。通过设置GridView的AllowSorting属性,为每列设置SortExpression,配合Sorting事件处理代码,根据用户点击列头进行升序或降序排序。在后台代码中,通过Linq查询动态根据排序字段和方向调整数据源的排序方式。

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

前端代码:

添加一个gridview,将AllowSorting属性设置为true,在gridview每一列的SortExpression属性中添加相应的值,生成的代码如下:

<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
            AutoGenerateColumns="False" onsorting="GridView1_Sorting">
        <Columns>
            <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID"
                SortExpression="EmployeeID" />
            <asp:BoundField DataField="LastName" HeaderText="LastName"
                SortExpression="LastName" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName"
                SortExpression="FirstName" />
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:BoundField DataField="TitleOfCourtesy" HeaderText="TitleOfCourtesy"
                SortExpression="TitleOfCourtesy" />
        </Columns>
        </asp:GridView>

后台调用代码:

 

 private void BindEmp()
        {
            List<Employees> localDataTable;
            localDataTable = objCategories.FindAllList(ViewState["SortOrder"].ToString(), ViewState["OrderDire"].ToString());
            GridView1.DataSource = localDataTable;
            GridView1.DataBind();            
        }

    gridview 的Sorting 事件代码:

 protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            string spage = e.SortExpression;
            if (ViewState["SortOrder"].ToString() == spage)
            {
                if (ViewState["OrderDire"].ToString() == "DESC")
                {
                    ViewState["OrderDire"] = "ASC";
                }
                else
                {
                    ViewState["OrderDire"] = "DESC";
                }
            }
            else
            {
                ViewState["SortOrder"] = e.SortExpression;
            }
            BindEmp();
        }

 protected void Page_Load(object sender, EventArgs e)
        {
           
            if (!IsPostBack)
            {
                ViewState["SortOrder"] = "EmployeeID";
                ViewState["OrderDire"] = "ASC";
                BindEmp();
            }
        }

Bll层代码:

 public List<Employees> FindAllList(string sordCol, string sortType)
        {
            return objDataAccess.FindAllList(sordCol, sortType); 
        }

DLL层代码:

public List<Employees> FindAllList(string sordCol, string sortType)
        {
            List<Employees> objList=new List<Employees>();
            IEnumerable<Employees> custQuery = null;
            switch (sordCol)
            {
                case "EmployeeID":
                    {
                        if (sortType == "ASC")
                        {
                            custQuery =
                            from em in nw.Employees
                            orderby em.EmployeeID
                            select em;
                        }
                        else if (sortType == "DESC")
                        {
                            custQuery =
                            from em in nw.Employees
                            orderby em.EmployeeID descending
                            select em;
                        }
                    }
                    break;
                case "LastName":
                    {
                        if (sortType == "ASC")
                        {
                            custQuery =
                            from em in nw.Employees
                            orderby em.LastName
                            select em;
                        }
                        else if (sortType == "DESC")
                        {
                            custQuery =
                            from em in nw.Employees
                            orderby em.LastName descending
                            select em;
                        }
                    }
                    break;
                case "FirstName":
                    {
                        if (sortType == "ASC")
                        {
                            custQuery =
                                from em in nw.Employees
                                orderby em.FirstName
                                select em;
                        }
                        else if (sortType == "DESC")
                        {
                            custQuery =
                                from em in nw.Employees
                                orderby em.FirstName descending
                                select em;
                        }
                    }
                    break;
                case "Title":
                    {
                        if (sortType == "ASC")
                        {
                            custQuery =
                                from em in nw.Employees
                                orderby em.Title
                                select em;
                        }
                        else if (sortType == "DESC")
                        {
                            custQuery =
                                from em in nw.Employees
                                orderby em.Title descending
                                select em;
                        }
                    }
                    break;
                default:
                    {
                        if (sortType == "ASC")
                        {
                            custQuery =
                                from em in nw.Employees
                                orderby em.TitleOfCourtesy
                                select em;
                        }
                        else if (sortType == "DESC")
                        {
                            custQuery =
                                from em in nw.Employees
                                orderby em.TitleOfCourtesy descending
                                select em;
                        }
                    }
                    break;
            }

            foreach (Employees cou in custQuery)
            {
                objList.Add(cou);
            }
            return objList.ToList();
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值