AspnetPager控件分页结果求助

hxymiller 2014-08-01 11:35:29
求助啊,用AspnetPager控件分页,当前台设置pagesize为1的时候,搜索结果正常显示,当前台的pagesize设为5,10之类的,就只能显示第一页和第二页 ,如下图所示;当pagesize为1的时候
当pagesize为10的时候
...全文
166 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxymiller 2014-08-04
  • 打赏
  • 举报
回复
引用 11 楼 chen0815qh 的回复:
不好意思,刚才那张图片上传错了
多谢啊,已经解决了
chen0815qh 2014-08-02
  • 打赏
  • 举报
回复
不好意思,刚才那张图片上传错了
chen0815qh 2014-08-02
  • 打赏
  • 举报
回复
hxymiller 2014-08-01
  • 打赏
  • 举报
回复
引用 1 楼 xiahouwen 的回复:
没看懂你在说什么啊 @webdiyer 来
就是每页的页容量设置显示1条的时候,数据能够全部显示,当页容量设置为5条,10条之类的,就只能显示部分数据了
wangnaisheng 2014-08-01
  • 打赏
  • 举报
回复
活靶子哥哥 2014-08-01
  • 打赏
  • 举报
回复
没看懂你在说什么啊 @webdiyer 来
OTiTO 2014-08-01
  • 打赏
  • 举报
回复
<a href = "http:www.baidu.com"></a>
hxymiller 2014-08-01
  • 打赏
  • 举报
回复
引用 5 楼 chen0815qh 的回复:
不是显示部分数据了,看来你对分页的PageSize属性不是很了解,比如说你总共有20条数据,那么PageSize=1表示每页显示1条,那么就有20页,而如果你每页显示10条,那么就只有两页了。
搜索同样的内容,共173条记录,按照pagesize为1应该是173页,pagesize为10的话应该是18页,现在的问题是搜同样的内容的时候,当把pagesize设为1的时候,数据是正常显示正在分页,总页数为173,当pagesize设为10的时候,数据只能显示前两页,正常应该是显示18页的数据
hxymiller 2014-08-01
  • 打赏
  • 举报
回复
引用 4 楼 glvicky 的回复:
你后台代码呢?
代码补上了
hxymiller 2014-08-01
  • 打赏
  • 举报
回复
后台代码: namespace PatentLucenceDemo.Web.测试搜索分页 { public partial class SearchPaged : System.Web.UI.Page { BLL.Aspatent bllasp = new BLL.Aspatent(); protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { if (!string.IsNullOrEmpty(Request.Form["create"])) { CreateContent(); } if (!string.IsNullOrEmpty(Request.Form["search"])) { string content = Request.Form["content"]; string date1 = Convert.ToDateTime(Request.Form["date1"]).ToString("yyyyMMdd"); string date2 = Convert.ToDateTime(Request.Form["date2"]).ToString("yyyyMMdd"); Response.Redirect("SearchPaged.aspx?content=" + content + "&date1=" + date1 + "&date2=" + date2 + ""); } } else { if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["content"])) { SearchContent(); } } } #region 创建索引 private void CreateContent() { string indexPath = @"C:\Users\otsoftadmin\Documents\Visual Studio 2010\Projects\PatentLucenceDemo\lucenedir2";//注意和磁盘上文件夹的大小写一致,否则会报错。将创建的分词内容放在该目录下。 FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexPath), new NativeFSLockFactory());//指定索引文件(打开索引目录) FS指的是就是FileSystem bool isUpdate = IndexReader.IndexExists(directory);//IndexReader:对索引进行读取的类。该语句的作用:判断索引库文件夹是否存在以及索引特征文件是否存在。 if (isUpdate) { if (IndexWriter.IsLocked(directory)) { IndexWriter.Unlock(directory); } } IndexWriter writer = new IndexWriter(directory, new PanGuAnalyzer(), !isUpdate, Lucene.Net.Index.IndexWriter.MaxFieldLength.UNLIMITED);//向索引库中写索引。这时在这里加锁。 List<Model.Aspatent> listasp = bllasp.GetModelList(""); foreach (Model.Aspatent model in listasp) { writer.DeleteDocuments(new Term("id", model.id.ToString())); writer.DeleteDocuments(new Term("AN", model.AN)); writer.DeleteDocuments(new Term("TI", model.TI)); Document document = new Document(); document.Add(new Field("id", model.id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED)); document.Add(new Field("AN", model.AN, Field.Store.YES, Field.Index.NOT_ANALYZED)); document.Add(new Field("TI", model.TI, Field.Store.YES, Field.Index.ANALYZED, Lucene.Net.Documents.Field.TermVector.WITH_POSITIONS_OFFSETS)); document.Add(new Field("PD", Convert.ToDateTime(model.PD).ToString("yyyyMMdd"), Field.Store.YES, Field.Index.NOT_ANALYZED)); writer.AddDocument(document); } writer.Close();//会自动解锁。 directory.Close();//不要忘了Close,否 } #endregion #region 搜索设置 private void SearchContent() { string content = HttpContext.Current.Request.QueryString["content"]; string date1 = HttpContext.Current.Request.QueryString["date1"]; string date2 = HttpContext.Current.Request.QueryString["date2"]; string indexPath = @"C:\Users\otsoftadmin\Documents\Visual Studio 2010\Projects\PatentLucenceDemo\lucenedir2";//最好将该项放在配置文件中。 string kw = content; kw = kw.ToLower(); FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexPath), new NoLockFactory()); IndexReader reader = IndexReader.Open(directory, true); IndexSearcher searcher = new IndexSearcher(reader); //过滤器 TermRangeFilter filter = new TermRangeFilter("PD", date1, date2, true, true); //排序 Sort sort = new Sort("id", true); //搜索条件 PhraseQuery query = new PhraseQuery(); foreach (string word in SearchHelper.SplitWord(kw))//将用户输入的搜索内容进行了盘古分词、 { query.Add(new Term("TI", word)); } query.SetSlop(100);//多个查询条件的词之间的最大距离.在文章中相隔太远 也就无意义. //TopScoreDocCollector是盛放查询结果的容器,用于分页的一种容器 TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true); searcher.Search(query, filter, collector);//根据query查询条件进行查询,查询结果放入collector容器 int PageIndex = AspNetPager1.CurrentPageIndex; int PageSize = AspNetPager1.PageSize; int RowCount = collector.GetTotalHits(); int PageCount = Convert.ToInt32(Math.Ceiling((RowCount * 1.0) / PageSize)); AspNetPager1.RecordCount = PageCount; ScoreDoc[] docs = collector.TopDocs((PageIndex - 1) * PageSize, PageSize).scoreDocs;//得到所有查询结果中的文档,GetTotalHits():表示总条数 TopDocs(300, 20);//表示得到300(从300开始),到320(结束)的文档内容. //可以用来实现分页功能 List<SearchResult> list = new List<SearchResult>(); for (int i = 0; i < docs.Length; i++) { int docId = docs[i].doc;//得到查询结果文档的id(Lucene内部分配的id) Document doc = searcher.Doc(docId);//找到文档id对应的文档详细信息 SearchResult result = new SearchResult(); result.TI = SearchHelper.Highlight(kw, doc.Get("TI")); result.AN = doc.Get("AN"); result.id = doc.Get("id"); list.Add(result); } this.SearchRepeater.DataSource = list; this.SearchRepeater.DataBind(); } public void AspNetPager1_PageChanging(object src, PageChangingEventArgs e) { AspNetPager1.CurrentPageIndex = e.NewPageIndex; SearchContent(); } #endregion } 前台代码: <body> <form id="form1" runat="server"> <div> 请输入搜索内容<input id="content" name="content" type="text"/> <input id="create" name="create" type="submit" value= "创建索引" /> <input id="search" name="search" type="submit" value="搜索" /> <input id="date1" name="date1" class="Wdate" type="text" onClick="WdatePicker()"/> <input id="date2" name="date2" class="Wdate" type="text" onClick="WdatePicker()"/> </div> <div> <ul> <asp:Repeater ID="SearchRepeater" runat="server"> <ItemTemplate> <li> <%#Eval("id")%> <br /> <%#Eval("AN")%> <br /> <%#Eval("TI")%> </li> </ItemTemplate> </asp:Repeater> </ul> </div> <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PrevPageText="上一页" NextPageText="下一页" ShowPageIndex="true" PageSize="1" PageIndexBoxType="DropDownList" OnPageChanging="AspNetPager1_PageChanging"> </webdiyer:AspNetPager> </form> </body>
chen0815qh 2014-08-01
  • 打赏
  • 举报
回复
不是显示部分数据了,看来你对分页的PageSize属性不是很了解,比如说你总共有20条数据,那么PageSize=1表示每页显示1条,那么就有20页,而如果你每页显示10条,那么就只有两页了。
glvicky 2014-08-01
  • 打赏
  • 举报
回复
你后台代码呢?

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧