簡體   English   中英

ASP.net Gridview不排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM