C# 允许按列gridview排序
我正在写一个从数据访问层获取数据并在GridView中显示的项目。 问题是允许按列排序。当我单击columnt的标题时,出现以下错误: 异常详细信息:System.Web.HttpException:GridView“GridView1”触发事件排序,尚未处理 下面是.cs代码: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
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();
}
}