代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

有ASP.NET MVC的页面导航帮助程序吗?

  •  6
  • Pure.Krome  · 技术社区  · 16 年前

    页面导航是否有HTML帮助程序?如果我有1000条记录要显示,我想显示前面的1 2 3 4…等下一个链接过滤集合下的内容。

    有人知道外面的情况吗?

    4 回复  |  直到 14 年前
        2
  •  3
  •   NathanD    16 年前

    如果要从JSON数据创建数据表,我强烈建议使用yui(yahoo ui library)数据表组件( http://developer.yahoo.com/yui/datatable/ )它可以很好地进行分页,您可以选择返回整个记录集以开始,然后在所有客户端进行分页,或者从服务器返回分页集。

    可能不适合你的场景,但我想我会提到。

        3
  •  0
  •   Brad Wilson    16 年前

    我有一个寻呼网格在我的 Dynamic Data for MVC sample application ,但网格是手动渲染的。数据使用的是来自Rob Conery的pagedlist(我认为他是从Scottgu那里得到的)。

    我一直在想,对于MVC,分页网格助手可能是什么样子…

        4
  •  0
  •   µBio    16 年前

    到目前为止,我对分页所做的就是创建一个寻呼机控件, 它需要一个分页URL、更新的HTML元素ID、页码、页面大小和总计数。

    分页URL的格式为controller/action,其中action返回HTML字符串(呈现的数据页)。

    寻呼机为页面附加一个javascript链接列表。这些链接调用一个基于jquery的Ajax函数,该函数指向分页URL。每个页面单击都会用Ajax调用的结果替换HTML元素的当前内容。 像这样:

    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.triparse(request.params[“pagenumber”],out page) int.triparse(request.params[“pagesize”],out-size)

    并将结果与数据访问组件一起使用,以获取数据页,将其呈现为HTML并返回。

    希望有帮助,我可以在需要的时候扩展它。