ASP.net Gridview not sorting
本文关键字:sorting not Gridview net ASP | 更新日期: 2023-09-27 18:17:48
我有一个gridview,我想排序。我已经阅读了一些教程,并直接从MSDN页面复制了我的大部分代码,但我无法让它工作。它可以编译,但是当我单击网格列标题时什么也没有发生。
我的HTML:
<asp:DataGrid runat="server" id="dgrMainGrid" CssClass="c_mainGrid"
AutoGenerateColumns="true" AllowSorting="true"
OnSorting="TaskGridView_Sorting" />
我的后台代码:
protected void TaskGridView_Sorting(object sender, GridViewSortEventArgs e)
{
//Retrieve the table from the session object.
DataTable dt = Session["Grid"] as DataTable;
if (dt != null)
{
dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
dgrMainGrid.DataSource = dt;
dgrMainGrid.DataBind();
}
}
private string GetSortDirection(string column)
{
// By default, set the sort direction to ascending.
string sortDirection = "ASC";
// Retrieve the last column that was sorted.
string sortExpression = ViewState["SortExpression"] as string;
if (sortExpression != null)
{
// Check if the same column is being sorted.
// Otherwise, the default value can be returned.
if (sortExpression == column)
{
string lastDirection = ViewState["SortDirection"] as string;
if ((lastDirection != null) && (lastDirection == "ASC"))
{
sortDirection = "DESC";
}
}
}
return sortDirection;
}
我知道会话变量中的数据表工作,因为它是页面加载时网格的源,它工作得很好。另一件事,如果它是重要的,这个gridview驻留在一个更新面板。
正如我所说的,这大部分是从MSDN页面复制的,我一直在看它,直到我变成代码盲。有人能看出我的错误吗?谢谢。
您使用的是DataGrid
,而不是GridView
。根据微软的说法,DataGrid没有OnSorting
事件,但有OnSortCommand
事件。要么使用它,要么切换到GridView(推荐)
<asp:DataGrid runat="server" OnSortCommand="dgrMainGrid_SortCommand" id="dgrMainGrid" CssClass="c_mainGrid" AutoGenerateColumns="true" AllowSorting="true" />
和
后面的代码protected void dgrMainGrid_SortCommand(object source, DataGridSortCommandEventArgs e)
{
DataTable dt = Session["Grid"] as DataTable;
if (dt != null)
{
dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
dgrMainGrid.DataSource = dt;
dgrMainGrid.DataBind();
}
}
和你的GetSortDirection
不工作,因为它应该。