2024年11月8日 星期五

[研究]ASP.NET, X.PagedList.10.2.1 升級 X.PagedList.10.5.7,編譯出錯

[研究]ASP.NET, X.PagedList.10.2.1 升級 X.PagedList.10.5.7,編譯出錯

2024-11-07

官方網站

https://andrew.gubskiy.com/projects/item/open-source

https://www.nuget.org/packages/X.PagedList/10.2.1

https://www.nuget.org/packages/X.PagedList/10.5.7

********************************************************************************

【PagedList.10.2.1】

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:GridView ID="gvData" runat="server" AutoGenerateColumns="true"></asp:GridView>
        <br />
        <asp:Repeater ID="pager" runat="server" OnItemCommand="pager_ItemCommand">
            <ItemTemplate>
                <asp:LinkButton ID="lnkPage" runat="server" CommandName="Page" 
                    CommandArgument='<%# Container.DataItem %>'
                    Text='<%# Container.DataItem %>'></asp:LinkButton>
            </ItemTemplate>
        </asp:Repeater>
    </form>
</body>
</html>


Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI.WebControls;
using X.PagedList;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        private const int PageSize = 10; // 每頁顯示的項目數量

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindData(1); // 預設顯示第 1 頁
            }
        }

        private void BindData(int pageNumber)
        {
            // 模擬資料來源
            List<string> data = Enumerable.Range(1, 100).Select(i => "Item " + i).ToList();

            // 使用 X.PagedList 進行分頁
            var pagedData = data.ToPagedList(pageNumber, PageSize);

            // 綁定分頁資料至 GridView
            gvData.DataSource = pagedData;
            gvData.DataBind();

            // 設定分頁按鈕
            pager.DataSource = Enumerable.Range(1, pagedData.PageCount);
            pager.DataBind();

            // 儲存目前頁碼
            ViewState["CurrentPage"] = pageNumber;
        }

        protected void pager_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Page")
            {
                int pageNumber = Convert.ToInt32(e.CommandArgument);
                BindData(pageNumber);
            }
        }
    }
}

實際測試OK



********************************************************************************

更新:

X.PagedList.10.2.1 -> X.PagedList.10.5.7

Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1 -> Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0


嚴重性 程式碼 說明 專案 檔案 隱藏項目狀態

錯誤 CS1061 'List<string>' 未包含 'ToPagedList' 的定義,也找不到可接受類型 'List<string>' 第一個引數的可存取擴充方法 'ToPagedList' (是否遺漏 using 指示詞或組件參考?) WebApplication1 C:\CodeTemp3\WebApplication1\WebApplication1\Default.aspx.cs 27 作用中


********************************************************************************

【X.PagedList.10.5.7】

測試把

using X.PagedList;   

換成

using X.PagedList.Extensions;   

執行正常。

(完)

相關



沒有留言:

張貼留言