gpt4 book ai didi

c# - 使用 Repeater 和 SQL 自定义分页

转载 作者:行者123 更新时间:2023-11-30 18:06:41 25 4
gpt4 key购买 nike

我一直在寻找一个好的教程来教我如何使用简单的 DataBound 控件(如 Repeater)制作自定义的 Paging 控件,以实现高性能的分页功能。

我找到了很多关于这个问题的文章,但没有一篇是完整的答案。

我正在使用 SQL、Items Repeater(在代码隐藏中直接绑定(bind),不使用数据源)、PageNumbers 转发器(它将有一个链接作为 ItemTemplate 来传递查询字符串,因此使用的方法可以检索下一部分Items),一个用于保存当前页码和标题的标签。

我一直在尝试在 N-Layered Web Applications with ASP.NET 3.5 Part 4: Sorting, Paging and Filtering (The Database Paging Section and ignore the rest) 上实现这个例子。到目前为止,我已经在我的数据访问 Lyaer 中创建了一个 SQL 命令,如下所示:

WITH Records AS ( SELECT ItemId, ItemName, ROW_NUMBER() OVER (ORDER BY ItemId) AS 'RowNumber' FROM   Items)  SELECT * FROM Records WHERE (RowNumber BETWEEN (@startIndex) AND @startIndex + @pageSize - 1)

但现在我被困在如何在我的表示层中使用它!

最佳答案

您可以创建自定义方法来呈现您自己的分页控件。这是一个例子:

    /// <summary>
/// Produces html for a pagination control.
/// </summary>
/// <param name="page">Page number for the current page (1-based index).</param>
/// <param name="pageSize">Number or items per page.</param>
/// <param name="totalItems">Total number of items across all pages.</param>
/// <returns>Html of a pagination control.</returns>
public string RenderPaginationControl(int page, int pageSize, int totalItems)
{
int totalPages = (int)Math.Ceiling((double)totalItems/pageSize);

// Create pager.
StringBuilder pagerSb = new StringBuilder();
for (int i = 1; i <= totalPages; ++i)
{
// If it is NOT a link to current page.
if (i != page) { pagerSb.Append(string.Format("<a href='/data.aspx?page={0}'>{0}</a>", i)); }
// If it is the link to current page.
else { pagerSb.Append(string.Format("<span>{0}</span>", i)); }
}

return pagerSb.ToString();
}

正如您所见,除了 sql 之外,您还需要调用

SELECT COUNT(*) FROM Items

并将该值传递给 RenderPaginationControl 中的 totalItems

就 Repeater 的绑定(bind)而言——它非常简单:

this.MyRepeater.DataSource = DAL.GetItems(page, pageSize);
this.MyRepeater.DataBind();

int totalItems = DAL.GetTotalNumberOfItems();
this.PaginationLabel.Text = RenderPaginationControl(page, pageSize, totalItems);

关于c# - 使用 Repeater 和 SQL 自定义分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com