2011-09-22 65 views
0

我正在开发asp.net mvc3应用程序,并且有很多来自数据库的记录。我想只显示10条记录,然后用户可以点击按钮查看下面的10条记录,等等......就像发布更多记录的Facebook墙一样。如何在asp.net mvc3中进行分页?

如何在我的应用程序中使用jQuery和ajax实现这件事?

如何使用分页控制视图中的显示数据?

我使用它来获取10条记录,但我想用更多的录制按钮显示所有记录

var Entity = (from a 
    in context.Data 
    where <Condition> 
    select a).Take(10); 

回答

1

以下文章应该给你一个想法:

http://weblogs.asp.net/andrewrea/archive/2008/07/01/asp-net-mvc-quot-pager-quot-html-helper.aspx

http://weblogs.asp.net/gunnarpeipman/archive/2010/02/21/simple-pager-for-asp-net-mvc.aspx

另一方面,你可以这样实现它:

获取NuGet包称为TugberkUg.MVC

然后,控制器应该如下:

public ActionResult Index(int page = 0) { 

     const int pageSize = 10; 

     #region _filter the model 

     IQueryable<myModel> model = _myrepo.GetAll() 

     #endregion 

     #region _convert the model to paginatedList 

     var paginatedModel = 
      new TugberkUg.MVC.Helpers.PaginatedList<myModel>(model, page, pageSize); 

     #endregion 

     return View(paginatedModel); 
    } 

而且,在这里你的控制器应如何样子:

@model TugberkUg.MVC.Helpers.PaginatedList<myModel> 

@foreach(var item in Model) { 

    <p>@item.id</p> 

} 

您需要以处理寻呼机,这里是你的一个样本:

ASP.NET MVC PaginatedList Pager - Put wise "..." after certain point

这个TugberkUg.MVC.Helpers.PaginatedList类将为寻呼机提供所有必要的字段。

0

我不知道任何.net库会为您打开包装盒,因此我会推出DIY解决方案供您思考。

如何在我的应用程序中使用jQuery和Ajax实现这件事?

为ajax请求设置特定的控制器可能是明智的做法。只需要一个单独的区域(Ajax),并将您的ajax请求发送到您设置的网址。

如何使用分页控制显示数据在视图中?

设置一个接受“页面”参数的控制器。

公众的ActionResult的GetData(INT?页){// 页面为空允许默认页面

// Do your query here to get the specific page. 

}

我不知道,如果你需要比这更多的其他信息。如果我试图做你正在做的事情,这就是我会做的。希望有所帮助。

0

如果您使用Webgrid显示数据,那么rowperpage会执行。

var grid = new WebGrid(source: Model, selectionFieldName: "SelectedRow", rowsPerPage: 10, canPage: true, canSort: true); 
+0

嘿StewieFG!我没有使用网格。 – Bhargav

0

我会建议使用telerik mvc控件。它们非常易于使用,功能强大且免费。

www.telerik.com