• 博客园分页JQuery打造的分页无刷新的Repeater


          博客园的分页从同步到异步,从漏斗到圈圈。用户体验越来越好了

          服务器控件笨重,但是Repeater得出现概率还是挺大的,那是因为它是笨重的服务器控件当中比较轻巧的,而且可控性强,灵活。所以很多项目到处是Repeater。

          服务器控件都是向页面输出HTML流,所以根据这一点,可以截取Repeater输出的html,制作无刷新的Repeater。

         先看博客园的分页截图:

    在看俺的:

    获取信息后:

    虽然有点丑,那是因为美工没给静态页面,给了静态页面,动态拼点CSS进去就漂亮多了。

    代码解析:

    代码
     1 using System;
     2 using System.Data;
     3 using System.Configuration;
     4 using System.Collections;
     5 using System.Web;
     6 using System.Web.Security;
     7 using System.Web.UI;
     8 using System.Web.UI.WebControls;
     9 using System.Web.UI.WebControls.WebParts;
    10 using System.Web.UI.HtmlControls;
    11 using System.IO;
    12 using System.Threading;
    13 
    14 namespace ___
    15 {
    16     public partial class Repeater : System.Web.UI.Page
    17     {
    18         protected void Page_Load(object sender, EventArgs e)
    19         {
    20             Thread.Sleep(2000);
    21                 DataTable houseDt = CreateTestData(Request["pageIndex"]);
    22                 this.Repeater1.DataSource = houseDt;
    23                 this.Repeater1.DataBind();
    24                 Response.Clear();
    25                 StringWriter sw = new StringWriter();
    26                 HtmlTextWriter htw = new HtmlTextWriter(sw);
    27                 Repeater1.RenderControl(htw);
    28                 Response.Write(sw.ToString());
    29                 Response.End();
    30          
    31         }
    32 
    33         //根据pageIndex去数据库查询,这里省去
    34         public DataTable CreateTestData(string pageIndex)
    35         {
    36             DataTable dt = new DataTable();
    37             DataTable testTable = new DataTable("HouseInfo");
    38             ////主键
    39             //DataColumn testCol = testTable.Columns.Add("HouseID", typeof(Int32));
    40             ////允许为空
    41             //testCol.AllowDBNull = false;
    42             ////唯一
    43             //testCol.Unique = true;
    44             testTable.Columns.Add("HouseID"typeof(String));
    45             testTable.Columns.Add("HouseName"typeof(String));
    46             testTable.Columns.Add("HouseAdress"typeof(String));
    47             testTable.Columns.Add("HousePrice"typeof(Double));
    48             testTable.Columns.Add("HousePriceType"typeof(String));
    49 
    50 
    51             testTable.Rows.Add(new Object[] {""+ pageIndex+"页  ""华伦公寓""上地西路2号"22.2"万元" });
    52             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""元都别墅""唐家岭2号"22.2"万元" });
    53             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""东方梅地亚""八维2号"32.2"万元" });
    54             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""香山艺墅""西大望路,广渠路31号"42.2"万元" });
    55             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""珠江骏景小区""高巢海淀区清河高巢"62.2"万元" });
    56             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""阳春光华""东二环朝阳门外大街"72.2"万元" });
    57             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""中海雅园""长虹桥东200米路北(邮编:100026)"722.2"万元" });
    58             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""时代国际""上地西路2号"52.2"万元" });
    59             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""天兆家园""双井桥西北侧(国贸桥向南约700米)"222.2"万元" });
    60             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""芍药居北里""富尔大厦 CBD 国贸  朝阳区"24.2"万元" });
    61             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""富力城三期""上地西路2号"12.2"万元" });
    62             testTable.Rows.Add(new Object[] { "" + pageIndex + "页  ""万达广场""祟文门地铁广渠门内东花市南里富贵园"2222.2"万元" });
    63             return testTable;
    64         }
    65     }
    66 }
    67 

    这是模拟了一些数据绑定到Repeater,真实项目里用分页的sql,如--正反排啊、row_number、临时表啊···等等分页方法

    然后通过:

                    StringWriter sw = new StringWriter();
                    HtmlTextWriter htw = new HtmlTextWriter(sw);
                    Repeater1.RenderControl(htw);
                    Response.Write(sw.ToString());

     获取Repeater生成的HTML,输出给另外一个页面。

    代码
     1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="___._Default" %>
     2 
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4 
     5 <html xmlns="http://www.w3.org/1999/xhtml" >
     6 <head >
     7 <title>``</title>
     8        <script src="jquery-1.4.2.min.js" type="text/javascript"></script>
     9        <script type="text/javascript" language="javascript">
    10            var  firstPageIndex=1;
    11              var  linkHTML="";
    12          $(document).ready(function(){    
    13            getHouseInfo(firstPageIndex);     
    14          }); 
    15    
    16    function  getLink(pageIndex)
    17    {
    18          $.ajax({
    19                 url:"GetHouseCount.ashx",
    20                 data:"time="+new Date().getTime(),
    21                 success:function(result){
    22                 for(var i=1;i<parseInt(result)+1;i++)
    23                      {
    24                      if(pageIndex==i)
    25                          {
    26                           linkHTML+='<span>'+i+'</span>&nbsp;&nbsp;'
    27                          }
    28                      else
    29                          {
    30                           linkHTML+='<a href="javascript:void(0)" onclick=" getHouseInfo('+i+')">'+i+'</a>&nbsp;&nbsp;'
    31                          }
    32                      }   
    33                          $("#pageLink").html(linkHTML);
    34                 } 
    35             });
    36    }
    37    
    38    
    39        function   getHouseInfo(pageIndex)
    40        {
    41        linkHTML="";
    42        getLink(pageIndex);
    43           $("#houseInfo").html(' <img src="http://cnblogs.com/images/loading.gif" />');
    44       
    45         $.ajax({
    46                 url:"Repeater.aspx",
    47                 data:"pageIndex="+pageIndex+"&time="+new Date().getTime(),
    48                 success:function(result){
    49                     $("#houseInfo").html(result);
    50                 } 
    51             });
    52        }    
    53        </script>
    54 </head>
    55 <body> 
    56     <div id="houseInfo">
    57     
    58     </div>
    59     <div id="pageLink">
    60     
    61     </div>
    62  
    63 </body>
    64 </html>
    65 

    这是获取repeater生成的HTML的页面,一个是异步获取页码,动态拼出页码,
    另一是异步获取房源信息,直接把接收的HTML贴进id为houseInfo的DIV。     

    代码下载===>

  • 相关阅读:
    MYSQL/HIVESQL笔试题(一):HIVESQL(一)分组求TopN/行转列/列转行
    ALINK(七):ALINK使用技巧(二)
    Hive实战(6):完整案例(二)业务分析
    Hive实战(5):完整案例(一)准备
    Mysql基础(二十四):数据类型/常见约束
    Mysql基础(二十三):视图/存储过程
    数据可视化基础专题(三十四):Pandas基础(十四) 分组(二)Aggregation/apply
    Daily Coding Problem: Problem #677
    1027. Longest Arithmetic Subsequence (Solution 1)
    346. Moving Average from Data Stream
  • 原文地址:https://www.cnblogs.com/iamzhanglei/p/1749381.html
Copyright © 2020-2023  润新知