C# 允许按列gridview排序

C# 允许按列gridview排序,c#,asp.net,sorting,gridview,C#,Asp.net,Sorting,Gridview,我正在写一个从数据访问层获取数据并在GridView中显示的项目。 问题是允许按列排序。当我单击columnt的标题时,出现以下错误: 异常详细信息:System.Web.HttpException:GridView“GridView1”触发事件排序,尚未处理 下面是.cs代码: public partial class Default: System.Web.UI.Page { EmployeesTableAdapter eta = new EmployeesTable

我正在写一个从数据访问层获取数据并在GridView中显示的项目。 问题是允许按列排序。当我单击columnt的标题时,出现以下错误:

异常详细信息:System.Web.HttpException:GridView“GridView1”触发事件排序,尚未处理

下面是.cs代码:

public partial class Default: System.Web.UI.Page
    {
        EmployeesTableAdapter eta = new EmployeesTableAdapter();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GridView1.DataSource = eta.GetData();
                GridView1.DataBind();
            }
        }
    }
下面是.aspx代码(仅gridview):



有人知道如何允许按列排序吗?

您需要定义一个排序方法,并实现它:

<asp:GridView ID="GridView1" **OnSorting="gridViewSorting"** runat="server" />



protected void gridViewSorting(object sender, GridViewSortEventArgs e)
{
   DataTable dataTable = gridView.DataSource as DataTable;

   if (dataTable != null)
   {
      DataView dataView = new DataView(dataTable);
      dataView.Sort = your sort expression

      gridView.DataSource = dataView;
      gridView.DataBind();
   }
}

受保护的无效gridViewSorting(对象发送器、GridViewSortEventArgs e)
{
DataTable DataTable=gridView.DataSource作为DataTable;
if(dataTable!=null)
{
DataView DataView=新的DataView(dataTable);
dataView.Sort=您的排序表达式
gridView.DataSource=dataView;
gridView.DataBind();
}
}

GridView不会自行排序。您需要为GridView排序事件添加一些代码,并将其连接起来

首先,将
OnSorting
事件的名称添加到
.aspx
页面上的
GridView

<asp:GridView ID="gridView" OnSorting="gridView_Sorting" runat="server" />
<asp:GridView ID="gridView" OnSorting="gridView_Sorting" runat="server" />
   private string ConvertSortDirectionToSql(SortDirection sortDirection)
    {
       string newSortDirection = String.Empty;

   switch (sortDirection)
   {
      case SortDirection.Ascending:
             newSortDirection = "ASC";
             break;

      case SortDirection.Descending:
         newSortDirection = "DESC";
         break;
   }

   return newSortDirection;
}

protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
   DataTable dataTable = gridView.DataSource as DataTable;

   if (dataTable != null)
   {
      DataView dataView = new DataView(dataTable);
      dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);

      gridView.DataSource = dataView;
      gridView.DataBind();
   }
}