[英]ASP.net Gridview not sorting
我有一個要排序的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
。 根據Microsoft的說法,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
無法正常工作。 請參閱此示例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.