首页 新闻 会员 周边

MVc 分页遇到的问题 就帮助

0
悬赏园豆:20 [待解决问题]
写了一个 分页的 类  但是 遇到问题了  就是 如果在上面加上查询方法的话
按查询条件列出不分数据  但是如果点击下一页的话 分页这个功能会重新加载 显示出来的是数据库原有的数据 而不是按条件查询出来的数据了 请问怎么解决呢 我把 List文件的代码贴上
希望大家能帮忙
public class NewList<T> : List<T>
    {
        public int PageIndex
        {
            get;
            set;
        }
        /// 每页记录的数量
        public int PageSize { get; private set; }
        /// 记录总条数
        public int TotalCount { get; private set; }
        /// 共有的页数和
        public int TotalPages { get; private set; }
        public NewList(IQueryable<T> source, int pageIndex, int pageSize)
        {
            PageIndex = pageIndex;
           
            PageSize = pageSize;
            TotalCount = source.Count();
            // 进上去取整( 总记录条数/一面记录的条数)
            TotalPages = (int)Math.Ceiling(TotalCount / (double)pageSize);
            this.AddRange(source.Skip(pageIndex  * pageSize).Take(PageSize));
        }
 
然后还有index
<% =Html.ActionLink("首页", "Index", new { page = 0 })%>|
    <% if (Model.HasPreviousPage)
       {%>
    <% =Html.ActionLink("上一页", "Index", new { page = (Model.PageIndex -1  ) })%>|
    <%} %>
    <% if (Model.HasNextPage)
       {%>
    <% =Html.ActionLink("下一页", "Index", new { page = (Model.PageIndex + 1) })%>|
    <%} %>
    <% =Html.ActionLink("尾页", "Index", new { page = Model.TotalPages -1})%>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <div class="clear">
 <span style="float: left; width: 40%">共<%=Model.TotalPages%>条记录, 页<%=Model.PageIndex+1%>/<%=Model.TotalPages%></span>
   第
 <%=Html.TextBox("pageindex", Model.PageIndex + 1 , new {style="width:30px;"})%>
   页<input type="submit" value="转到" id="sub" /></div>
    <%} %>
</asp:Content>


public ActionResult Index(int? page)
{
var NewsList = DCDC.News.Select(newss => newss);
var paginatedNews = new NewList<News>(NewsList, page ?? 0, 10);//实现分页功能
return View(paginatedNews);
}

这个是 Controller

阿わたし浩的主页 阿わたし浩 | 初学一级 | 园豆:130
提问于:2010-12-31 13:31
< >
分享
所有回答(2)
0

把查询结果放在缓存里不行么?

七月霄雨 | 园豆:1282 (小虾三级) | 2010-12-31 20:40
怎么放
支持(0) 反对(0) 阿わたし浩 | 园豆:130 (初学一级) | 2011-01-04 09:29
将查询结果放在Session里面,不过这只限于查询结果较少的情况,如果结果数据比较大,那就只保存关键的数据或者是查询条件
支持(0) 反对(0) 七月霄雨 | 园豆:1282 (小虾三级) | 2011-01-04 21:49
0

你拉查询条件放在什么地方,可以贴出来看看吗?查询条件应放在进入

var paginatedNews = new NewList<News>(NewsList, page ?? 0, 10);

之前(如:var NewsList = DCDC.News.Select(newss => newss).where........),我一直也是用这个分页从来没遇到你这样的问题,你这个如果不和Linq To SQL 结合起来用意义不大而且必须保证进入new NewList<News>(NewsList, page ?? 0, 10)前你的NewsList还是延迟查询结果,不知道有没有帮到你

CyBaSter | 园豆:183 (初学一级) | 2011-01-14 09:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册