`
xufei0110
  • 浏览: 110939 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

gridview排序

    博客分类:
  • .net
阅读更多

在GridView中可以通过两种方式来指定模板列的标题:
    1 通过HeaderText属性指定:

<asp:TemplateField SortExpression="..." HeaderText="..." >
    <ItemTemplate>
             .......                                              
     </ItemTemplate>                                             
</asp:TemplateField>

 2 通过HeaderTemplate模板来指定

<asp:TemplateField SortExpression="...">
         <ItemTemplate>
                                                 ......
          </ItemTemplate>
           <HeaderTemplate>
                                                       ....
           </HeaderTemplate>                                              
 </asp:TemplateField>

 其中第一种方式会触发Sorting事件,第二种方式不会。所以如果要想为模板列提供排序的,要采用第一种方式指定标题。

 

一下是一个完整的列子

    1. 一个GridView

        首先: 将GridView的 AllowSorting 属性 设置为 true。(允许点击每一列的头来排序)

        然后: 设置你想排序的列的 SortExpression="id" 为你要排序的数据源的相应属性。

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
        AutoGenerateColumns="False" onsorting="GridView1_Sorting">
        <Columns>
            <asp:TemplateField HeaderText="姓名" >
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("user.name") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="id" SortExpression="id">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
 

   2. 完成代码

public partial class mastermanage_CarManage : System.Web.UI.Page
{
    /// <summary>
    /// 查询出来的 car信息的list
    /// </summary>
    IEnumerable<Car> carList = null;

    UserDao userDao = new UserDao();

    protected void Page_Load(object sender, EventArgs e)
    {
        
        carList = userDao.getUserCar();
        this.GridView1.DataSource = carList;
        this.GridView1.DataBind();

    }
    
    /// <summary>
    /// 模板列排序的方法
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        // 从事件参数获取排序数据列
        string sortExpression = e.SortExpression.ToString();
        // 假定为排序方向为“顺序”
        string sortDirection = "ASC";
        // “ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改
        if (sortExpression == this.GridView1.Attributes["SortExpression"])
        {
            //获得下一次的排序状态
            sortDirection = (this.GridView1.Attributes["SortDirection"].ToString() == sortDirection ? "DESC" : "ASC");
        }
        // 重新设定GridView排序数据列及排序方向
        this.GridView1.Attributes["SortExpression"] = sortExpression;
        this.GridView1.Attributes["SortDirection"] = sortDirection;
        this.BindGridView();


    }

    /// <summary>
    /// 这个 使用 linq帮定的
    /// </summary>
    private void BindGridView()
    {
        // 获取GridView排序数据列及排序方向
        string sortExpression = this.GridView1.Attributes["SortExpression"];
        string sortDirection = this.GridView1.Attributes["SortDirection"];
        // 调用业务数据获取方法
        UserDao userDao = new UserDao();

        // 根据GridView排序数据列及排序方向设置显示的默认数据视图
        if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
        {
            if (sortDirection.Equals("DESC"))
            {
                // l => l.id 这个应该按照 sortExpression的内容来写
                //carList = from l in carList orderby l.id ascending select l;
                carList = carList.OrderBy(l => l.id);
            }
            else
            {
                //carList = from l in carList orderby l.id descending select l;
                carList = carList.OrderByDescending(l => l.id);
            }
            
        }
        // GridView绑定并显示数据 
        this.GridView1.DataSource = carList.ToList<Car>();
        this.GridView1.DataBind();
    }

}

 

 

    /// <summary>
    /// 绑定到 DataTable 数据源 排序
    /// </summary>
 
    private void BindGridView()
    {
        // 获取GridView排序数据列及排序方向
        string sortExpression = this.GridView1.Attributes["SortExpression"];
        string sortDirection = this.GridView1.Attributes["SortDirection"];
        // 调用业务数据获取方法
        DataTable dtBind = this.getDB();
        // 根据GridView排序数据列及排序方向设置显示的默认数据视图
        if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
        {
            dtBind.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
        }
        // GridView绑定并显示数据
        this.GridView1.DataSource = dtBind;
        this.GridView1.DataBind();
    }

    /// <summary>
    /// DataTable 数据源
    /// </summary>
    /// <returns></returns>
    private DataTable getDB()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("id");
        dt.Columns.Add("name");
        dt.Columns.Add("age");
        dt.Rows.Add(new object[] { "000001", "hekui"});
        dt.Rows.Add(new object[] { "000002", "zhangyu"});
        dt.Rows.Add(new object[] { "000003", "zhukundian"});
        dt.Rows.Add(new object[] { "000004", "liyang"});
        dt.Rows.Add(new object[] { "000005", "caili"});
        return dt;
    }
 
分享到:
评论

相关推荐

    GridView排序

    ### GridView排序知识点详解 #### 一、GridView控件概述 GridView是ASP.NET中一个非常强大的数据绑定控件,用于在网页上以表格形式显示数据。它支持多种视图模式(如表格、列表或索引卡片),并且具备丰富的内置...

    GridView排序类完整代码

    GridView排序允许用户根据列头点击来对数据进行升序或降序排列,极大地提升了用户体验。在默认情况下,GridView并不支持排序,我们需要手动添加这个功能。主要涉及以下知识点: 1. **DataSource绑定**:GridView的...

    GridView排序.rar

    本压缩包“GridView排序.rar”包含了一个名为“GridView排序.txt”的文本文件,很显然,内容是关于如何实现GridView控件的数据排序功能。GridView排序是一个关键特性,它允许用户根据列的值对数据进行升序或降序排列...

    gridview排序 变色 分页添加命令实例

    在本实例中,“gridview排序 变色 分页添加命令”涉及到的关键知识点包括GridView的排序、行变色以及分页功能的实现。 1. GridView排序: GridView控件默认支持单击列头进行升序或降序排序。首先,需要在GridView...

    DevExpress GridView 排序状态下新增行不参与排序demo源码

    GridView 排序状态下,如果不采用GridView自带的新增空白行的话,而是采用AddNewRow或者自己编写的方法,新增行因为单元格值为空,导致排序发生混乱, 如果想固定住新增行始终停留在最底部,就需要自定义排序,...

    GridView排序的三种方式

    因为GridView本身不支持排序,所以只能对数据源进行排序。因为DataSet和List本身也是不支持排序的,所以写了以下例子。大家附加压缩包内的数据库就可以运行了。如果数据库实例有问题可以将配置文件中的服务器名由.改...

    利用AJAX 实现GRIDVIEW无刷新 排序源码

    在本文中,我们将深入探讨如何利用AJAX技术实现GRIDVIEW控件的无刷新排序功能。...通过以上步骤,我们可以实现一个高效的、无刷新的GRIDVIEW排序功能,充分利用AJAX的优势,提高Web应用的交互性和响应速度。

    GridView 排序 Ajax

    这样当GridView排序时,只有UpdatePanel内的内容会被刷新。 ```html &lt;asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting"&gt; &lt;!-- 列定义 --&gt; &lt;/asp:GridView&gt; ...

    asp.net GridView排序简单实现

    接着,文档转到后台代码部分,这个部分包含了处理GridView排序的完整逻辑。页面加载时,首先会检查是否是第一次加载页面。如果是,则设置一些视图状态(ViewState),用来保存当前的排序字段和排序方向。这通过两个...

    GridView正反排序(C#)

    ### GridView正反排序(C#) 在Web开发中,特别是ASP.NET Web Forms中,`GridView` 控件被广泛用于展示和管理数据库中的数据。通过简单的配置,`GridView` 可以实现对数据的增删改查、分页以及排序等功能。其中,排序...

    linq 绑定 Gridview排序

    在这个场景中,我们讨论的是如何使用LINQ来绑定GridView控件,并实现数据的排序功能。GridView控件是ASP.NET中的一个常用组件,用于展示数据,支持多种操作,如分页、排序、筛选等。 首先,我们需要理解LINQ的基本...

    gridview的排序和分页功能

    **一、GridView排序功能** 1. **自动排序**: GridView控件默认支持单击列头进行排序。通过设置`AllowSorting`属性为`true`,用户可以点击列头来按照该列的数据升序或降序排序。排序的依据是服务器端的数据源。 2. ...

    给ASP.NET中GridView自动添加列排序箭头指示器图片控件源代码

    在ASP.NET开发中,GridView控件是用于展示数据表格的常用组件,它提供了丰富的功能,如分页、排序、筛选等。本知识点将详细介绍如何在GridView中为列添加自定义的排序箭头指示器图片控件,以提供更加直观的用户交互...

    GRIDVIEW无刷新AJAX 排序源码_aspx开发教程.rar

    在传统的GridView排序中,用户点击列头进行排序时,整个页面会进行刷新,这可能导致用户失去当前浏览位置和其他已加载的数据。而通过AJAX(Asynchronous JavaScript and XML)技术,我们可以实现在不刷新整个页面的...

    一个利用Jquery + ASP.NET 实现Gridview的排序例子程序

    在ASP.NET应用中,JQuery可以用于增强页面的交互性和动态性,如在本例中的Gridview排序。 1. **GridView控件**:GridView是ASP.NET Web Forms中的一种服务器控件,用于显示数据源(如数据库表)的数据,并提供多种...

Global site tag (gtag.js) - Google Analytics