repeater无刷新分页显示

 1     protected void Button1_Click(object sender, EventArgs e)
2 {
3 //button1 根据订单编号和订单时间搜索
4 BindList(1, true);
5 string callbackReference = ClientScript.GetCallbackEventReference(this, "arg", "ReceiveCallback", "content", false);
6 string callbackScript = string.Format("function CallServer(arg,content){{ {0} }}", callbackReference);
7 ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);
8 }
9
10 static int PAGESIZE = 10;你想每页显示几条数据
11 private int currentPageIndex;当前的页码
12 protected void BindList(int pageIndex, bool needRender)
13 {
14 string ddh = TextBox1.Text.Replace(" ", "");
15 string startDt = TxtStartTime.Value;
16 string endDt = TxtEndTime.Value;//这三条是查询条件
17 DataTable dt = new DataTable();
18 dt = dingdansussServices.GetDDanByDdhOrDt(ddh, startDt, endDt);//从数据库取得数据源
19 if (dt == null) return;
20 int pages = (dt.Rows.Count % PAGESIZE == 0) ? dt.Rows.Count / PAGESIZE : (dt.Rows.Count / PAGESIZE) + 1;
21 if (needRender)//用不用分页
22 {
23 RenderPager(pages);
24 } PagedDataSource pds = new PagedDataSource();
25 pds.DataSource = dt.DefaultView;
26 pds.AllowPaging = true;
27 pds.PageSize = 10;
28 if (pageIndex == 0)
29 {
30 pageIndex = 1;
31 }
32 //设置分页对象的当前索引
33 pds.CurrentPageIndex = pageIndex - 1;
34    //把数据源绑到repeater上去
35 Repeater1.DataSource = pds;
36 Repeater1.DataBind();
37 }
38
39 protected void RenderPager(int pages)
40 {
41 StringBuilder sb = new StringBuilder();
42 int pageIndex = 1;
43 do
44 {
45 sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>&nbsp;&nbsp;", pageIndex);
46 } while (pageIndex++ < pages);
47 lblCurPage.Text = sb.ToString();
48 }
49
50 public void RaiseCallbackEvent(string eventArgument)
51 {
52 currentPageIndex = Convert.ToInt32(eventArgument);
53 BindList(currentPageIndex, false);
54 }
55
56 public string GetCallbackResult()
57 {
58 //返回再次绑定后的Repeater的表现内容
59 return RenderControl(Repeater1);
60 }
61
62 private string RenderControl(Control control)
63 {
64 StringWriter writer1 = new StringWriter(CultureInfo.InvariantCulture);
65 HtmlTextWriter writer2 = new HtmlTextWriter(writer1);
66
67 control.RenderControl(writer2);
68 writer2.Flush();
69 writer2.Close();
70 return writer1.ToString();
71 }
72
73 protected void List_ItemDataBound(object sender, RepeaterItemEventArgs e)
74 {
75 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
76 {
77 Label NickName = e.Item.FindControl("NickName") as Label;
78 Label QNumber = e.Item.FindControl("QNumber") as Label;
79
80 DataRow row = e.Item.DataItem as DataRow;
81 NickName.Text = row["NickName"].ToString();
82 QNumber.Text = row["QNumber"].ToString();
83 }
84 }


页面:

 1 <head>
2 <script language="javascript" type="text/javascript">
3 function turnPage(pageIndex){
4 CallServer(pageIndex,'content');<%--这个content是下边那个div的id--%>
5 }
6
7 function ReceiveCallback(arg,context){
8 var container = document.getElementById(context);
9 //alert(arg + " " + context);
10 container.innerHTML = arg;
11 }
12 </script>
13 </head>
14
15
16 <body>
17
18 <div id="content">
19 <asp:Repeater ID="Repeater1" runat="server">
20 <HeaderTemplate><table border="1"><tr><td>订单编号</td><td>订购时间</td><td>订单金额</td><td>订单状态</td><td>查看</td></tr></HeaderTemplate>
21 <ItemTemplate ><tr>
22 <td><%#DataBinder.Eval(Container.DataItem, "订单编号")%></td>
23 <td><%#DataBinder.Eval(Container.DataItem, "订购时间")%></td>
24 <td><%#DataBinder.Eval(Container.DataItem, "订单金额")%></td>
25 <td><%#DataBinder.Eval(Container.DataItem, "订单状态")%></td>
26 <td><a href="order_detail.aspx?ddh='<%#DataBinder.Eval(Container.DataItem, "订单编号")%>'">查看</a></td>
27 </tr></ItemTemplate>
28 <FooterTemplate></table></FooterTemplate>
29 </asp:Repeater>
30 </div>
31 </body>

 

 

posted @ 2011-11-21 16:43  捂汗  阅读(1567)  评论(0编辑  收藏  举报