2008-10-28 32 views

回答

0

我在我的Dynamic Data for MVC sample application中有一个分页网格,但网格是手工渲染的。这些数据使用了来自Rob Conery的PagedList(他反过来我认为是从ScottGu那里得到的)。

我一直在思考什么分页格帮手可能看起来像MVC ...

+0

是的布拉德,我试图避免使用一些预烘烤的控件,因为他们可能有一些webforms代码。我们需要烘焙到期货中的可能是Html.PageNavigation(...)助手,它需要大量的参数..从记录数量,记录总数,css类等,或者甚至只是一个PagedList(我也使用广泛..与LazyList一起(向Rob Con点头)。我已经开始编写一个PageNavigation:ViewUserControl 视图用户控件,它可以放在任何视图的任何位置。可能没有 – 2008-10-28 05:54:35

3

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

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

0

我所做的分页迄今为止是创建一个寻呼控制, 它需要一个分页url,更新的html元素id,页码,页面大小和总数。

分页链接的形式控制器/动作在动作返回一个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.TryParse(Request.Params [ “PAGENUMBER”],走出页) int.TryParse(Request.Params [“pageSize”],out size))

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

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