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

ASP.NET 2.0 資料教程 45(二):DataList 預設分頁加入排序支援

     編輯:關於ASP.NET

DataList 內建分頁需搭配 `PagedDataSource`。本教程示範在預設分頁模式下加入排序功能。

核心概念

`PagedDataSource` 本身不支援排序,需在資料放入前對 `DataTable.DefaultView.Sort` 設定排序運算式。

BLL 擴充方法

[DataObjectMethod(DataObjectMethodType.Select, false)]
public PagedDataSource GetProductsSortedAsPagedDataSource(string sortExpression, int pageIndex, int pageSize)
{
    var products = GetProducts(); // 回傳 ProductsDataTable
    products.DefaultView.Sort = sortExpression; // 先排序
    var paged = new PagedDataSource
    {
        DataSource = products.DefaultView,
        AllowPaging = true,
        CurrentPageIndex = pageIndex,
        PageSize = pageSize
    };
    return paged;
}

ObjectDataSource 宣告

<asp:ObjectDataSource ID="ProductsDS" runat="server" TypeName="ProductsBLL"
    SelectMethod="GetProductsSortedAsPagedDataSource" OnSelecting="ProductsDS_Selecting">
    <SelectParameters>
        <asp:Parameter Name="sortExpression" Type="String" />
        <asp:Parameter Name="pageIndex" Type="Int32" />
        <asp:Parameter Name="pageSize" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

頁面程式碼

private string SortExpression
{
    get { return ViewState["SortExpr"] as string ?? "ProductName"; }
    set { ViewState["SortExpr"] = value; }
}

protected void ProductsDS_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
    e.InputParameters["sortExpression"] = SortExpression;
    e.InputParameters["pageIndex"] = CurrentPageIndex; // 自訂分頁 UI 管理的頁碼
    e.InputParameters["pageSize"] = PageSize;
}

// 排序按鈕事件
protected void SortLink_Click(object sender, EventArgs e)
{
    var lnk = (LinkButton)sender;
    string col = lnk.CommandArgument;
    SortExpression = (SortExpression == col) ? col + " DESC" : col;
    CurrentPageIndex = 0; // 排序變更重置頁碼
    DataList1.DataBind();
}

DataList 分頁 UI

使用 `DataList` 內建 `PageIndex` 屬性或自訂 `LinkButton` 控制 `CurrentPageIndex`,配合 `PagedDataSource` 即可實現分頁導航。

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