6

是否有任何用于页面导航的 html 助手。例如。如果我有 1000 条记录要显示,我想显示过滤后的集合下的 Previous 1 2 3 4 ... etc Next 链接内容。

有人知道那里有什么吗?

4

4 回答 4

3

如果您从 JSON 数据创建数据表,我强烈推荐 YUI(雅虎 UI 库)DataTable 组件(http://developer.yahoo.com/yui/datatable/)。它的分页非常好,您可以选择返回整个记录集以开始,然后在所有客户端分页或从服务器返回分页集。

可能不适合您的情况,但只是想我会提到它。

于 2008-10-28T15:45:42.507 回答
1

Checkout Paging with ASP.NET MVC , PageList Strikes Back and Create a Page HTML Helper

于 2008-10-28T10:23:02.377 回答
0

我的Dynamic Data for MVC 示例应用程序中有一个分页网格,但该网格是手工渲染的。数据使用 PagedList,它来自 Rob Conery(我认为他是从 ScottGu 那里得到的)。

我一直在考虑 MVC 的分页网格助手可能是什么样的......

于 2008-10-28T05:29:03.357 回答
0

到目前为止,我为分页所做的是创建一个 Pager 控件,它需要一个分页 url、用于更新的 html 元素 id、页码、页面大小和总数。

分页 url 的形式为控制器/动作,其中动作返回一个 html 字符串(呈现的数据页面)

寻呼机附加页面的 javascript 链接列表。这些链接调用一个基于 jQuery 的 ajax 函数,该函数会点击分页 url。每次页面单击都会将 html 元素的当前内容替换为 ajax 调用的结果。像这样的东西:

public string Render()
{
    var buffer = new StringBuilder( 1000 );
    buffer.AppendLine( @"<ul class=""datatable_pager"">" )
        .AppendLine( "\t<li>Additional Pages:</li>" );
    int numberOfPages = TotalItemCount % PageSize == 0 ? TotalItemCount / PageSize : TotalItemCount / PageSize + 1;

    for( int i = 0; i < numberOfPages; i++ )
    {
        AppendPageLink( buffer, i );
    }

    buffer.AppendLine( "\t</ul>" );
    AppendPagingJS( buffer );

    return buffer.ToString( );
}

private void AppendPageLink( StringBuilder buffer, int i )
{
    buffer.Append( "\t\t<li><a href=\"" )
    .Append( PagingLink.Replace( "$PAGE$", i.ToString( ) ) )
    .Append( "\">" )
    .Append( i.ToString( ) )
    .Append( "</a>" )
    .AppendLine( "\t\t</li>" );
}


private void AppendPagingJS( StringBuilder buffer )
{
    buffer.AppendLine( @"
        <script type=""text/javascript"">
        function page( page, size, updateElement )
        {
            $.post( '" + PagingUrl + @"',
                {
                    pageNumber: page, 
                    pageSize: size,
                },
                function(response) 
                {
                    $(""#"" + updateElement).html(response);
                },
                ""html""
            );
        }
        </script>" );
}

javascript 发布到分页 url,因此该操作需要执行以下操作:

int.TryParse(Request.Params["pageNumber"], out page) int.TryParse(Request.Params["pageSize"], out size))

并将结果与​​您的数据访问组件一起使用以获取数据页面,将其呈现为 html 并返回它。

希望有帮助,如果需要,我可以扩展它。

于 2008-10-30T05:44:12.827 回答