首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET GridView 進階教學(三):自訂比較器實現多欄位排序與程式化排序觸發

     編輯:關於ASP.NET

啟用排序

設定 GridView.AllowSorting = true,點擊欄位標題觸發 Sorting 事件。

自訂比較器

public int CompareByClientName(ClientInfo c1, ClientInfo c2) 
    => c1.ClientName.CompareTo(c2.ClientName);

public int CompareByPostCodeAndAddress(ClientInfo c1, ClientInfo c2) 
{
    int r = c1.PostCode.CompareTo(c2.PostCode);
    return r != 0 ? r : c1.AddressStr.CompareTo(c2.AddressStr);
}

public int CompareByPostCode(ClientInfo c1, ClientInfo c2) 
    => c1.PostCode.CompareTo(c2.PostCode);

Sorting 事件處理

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
{
    var clients = new ClientInfoAccessObj().GetAllClients();
    switch (e.SortExpression) 
    {
        case "ClientName": clients.Sort(CompareByClientName); break;
        case "MultiColumnSort": clients.Sort(CompareByPostCodeAndAddress); break;
        case "PostCode": clients.Sort(CompareByPostCode); break;
        default: 
            ClientScript.RegisterClientScriptBlock(this.GetType(), "InfoMsg", "alert('不支援對此欄位排序');", true);
            return;
    }
    GridView1.DataSource = clients;
    GridView1.DataBind();
}

程式化觸發排序

protected void btnSortByName_Click(object sender, EventArgs e) 
    => GridView1.Sort("ClientName", SortDirection.Ascending);

protected void btnSortByPostCodeAndAddress_Click(object sender, EventArgs e) 
    => GridView1.Sort("MultiColumnSort", SortDirection.Ascending);

透過 Comparison<T> 委派靈活實現單欄、多欄混合排序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved