ASP.net中继器控件的分页,具有显示下10页的功能



我正在使用一个寻呼功能来控制中继器,我修改了从以下链接中获取的脚本

http://www.dotnetfunda.com/articles/article456-custom-seo-friendly-paging-with-aspnet-repeater-or-datalist-control-.aspx

我对它进行了一定程度的修改,它运行良好寻呼现在显示为

1|2|3|4|5|6|7|8|9|10

分页功能运行良好,但我需要修改脚本,以便在用户点击下一个10链接以及Last和first Previous功能后,它将显示前5页和下5页

基于上述场景的示例

第一个-上一个1|2|3|4|5下一个-最后

如果我点击Next5链接,那么它应该显示

第一个-5上一个6|7|8|9|10下一个-上一个

下面是代码函数和我的存储过程

private string GetPagingDone(int thisPageNo, int totalCount, int pageSize, string pageName, int LangID, string extraQstringToAdd)
{
    int pageno = 0;
    int start = 0;
    int loop = totalCount / pageSize;
    int ilimit = 5;
    int remainder = totalCount % pageSize;
    StringBuilder strB = new StringBuilder("", 500);
    for (int i = 0; i < loop; i++)
    {
        pageno = i + 1;
        if (pageno.Equals(thisPageNo))
            strB.Append(pageno + "&nbsp; ");
        else
            strB.Append("<a href="" + pageName + "?start=" + start + "&page=" + pageno  +"&PageID=" + Request["PageId"] + "&Language=" + Request["Language"] + "">" + pageno + "</a>  ");
        if (i + 1 == loop)
        { strB.Append("  "); }
        else 
        { strB.Append(" | "); }
        start += pageSize;
    }
    if (remainder > 0)
    {
        pageno++;
        if (pageno.Equals(thisPageNo))
            strB.Append("" + pageno + "&nbsp; ");
        else
            strB.Append("<a href="" + pageName + "?start=" + start + "&page=" + pageno + "&PageID=" + Request["PageId"] + "&Language=" + Request["Language"] + "">" + pageno + "</a>  ");
    }
    return strB.ToString() + "";
}
ALTER PROCEDURE [dbo].[usp_ArticleListPaging]
        @startRowIndex int,
        @pageSize int,
        @LangID int,
        @totalCount int output
    AS
    BEGIN
        SET NOCOUNT ON;
        SET @totalCount = 0
        SET @startRowIndex = @startRowIndex + 1
        BEGIN
           SELECT * FROM ( Select art_Articles.*, ROW_NUMBER() OVER (ORDER BY art_Articles.ArticlePublishDate DESC) as RowNum
           FROM art_Articles WHERE art_Articles.ArticleActive = 1 AND art_Articles.ArticleVisible = 1 AND LanguageID =@LangID) as ArticleList
           WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @pageSize) - 1 ORDER BY ArticlePublishDate DESC
           SELECT @totalCount = Count(ArticleID) FROM art_Articles WHERE art_Articles.ArticleActive  = 1 AND art_Articles.ArticleVisible = 1 AND LanguageID =@LangID
        END
    END

我必须修改相同的代码才能使用此功能。我试了几个小时,但没能把它做好。非常感谢在这方面的任何帮助

我不知道为什么我会因为问这种问题而被给予-ve

这里有一个例子,它扩展了中继器,使其与另一个名为"DataPager"的内置控件一起工作,该控件可以执行您想要的所有操作。

http://www.codeproject.com/Articles/45163/Extend-Repeater-to-support-DataPager

还有另一个http://www.dot4pro.com/extend-repeater-support-datapager.html

关于如何使用它的一些例子http://www.c-sharpcorner.com/uploadfile/nipuntomar/datapager-in-Asp-Net-3-5/

最新更新