通过单击asp.net中的标题对数据gridview进行排序

时间:2013-03-24 06:57:51

标签: asp.net linq sorting gridview

请点击asp.net中的标题,帮助我在网格视图中对数据进行排序。我已经使用linq将绑定数据用于gridview。请帮帮我。

3 个答案:

答案 0 :(得分:0)

你可以很容易地做到。

因此,假设您有一个GridView,您可以在服务器端为其分配数据源。

您可以使用GridView_Sorting事件,如下所示:

首先,将当前应用的排序保存在某处。因为,您需要知道,您是否必须按升序或降序排序。如下所示。

public SortDirection CurrentSortDirection
{
    get
    {
        if (ViewState["sortDirection"] == null)
            ViewState["sortDirection"] = SortDirection.Ascending;

        return (SortDirection) ViewState["sortDirection"];                
    }
    set { ViewState["sortDirection"] = value; } 
}

然后在GridView的sorting事件中使用此属性:

protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
{
   if (CurrentSortDirection== SortDirection.Ascending)
   {
      CurrentSortDirection = SortDirection.Descending;
      var myDataSource = GetDataThroughLinq()
                         .OrderByDescending(s=>s.Id)
                         .ToList();
      GridView1.DataSource = myDataSource;
      GridView1.DataBind();
   }
   else
   {
      CurrentSortDirection = SortDirection.Ascending;
      var myDataSource = GetDataThroughLinq()
                         .OrderBy(s=>s.Id)
                         .ToList();
      GridView1.DataSource = myDataSource;
      GridView1.DataBind();
   }   
}

答案 1 :(得分:0)

你可以直接为gridview选择一个数据源,在gridview任务的正下方自动格式,选择datasouce后会提供更多选项,包括排序,分页和选择,点击每个标题,你会得到根据它排序的数据

答案 2 :(得分:0)

试试这个排序......

protected void RadgvData_SortCommand(object sender, GridSortCommandEventArgs e)
    {
        GridTableView tableView = e.Item.OwnerTableView;
        e.Canceled = true;
        GridSortExpression expression = new GridSortExpression();
        expression.FieldName = e.SortExpression;
        if (tableView.SortExpressions.Count == 0 || tableView.SortExpressions[0].FieldName != e.SortExpression)
        {
            expression.SortOrder = GridSortOrder.Descending;
        }
        else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Descending)
        {
            expression.SortOrder = GridSortOrder.Ascending;
        }
        else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Ascending)
        {
            expression.SortOrder = GridSortOrder.Descending;
        }

        tableView.SortExpressions.AddSortExpression(expression);
        RadgvData.Rebind();

    }