ASP.NET无刷新分页简单实现

下面就是和大家分享的实现无刷新分页功能的全部步骤,欢迎学习。

1、新建一个分页存储过程:

CREATE procedure [dbo].[P_Pager]
(@PageNumber int,
@PageSize int)
as
 declare @sql nvarchar(4000)
  set @sql = 'select top ' + Convert(varchar, @PageSize)  + ' * from T_Test where [type]=1 and id not in (select top ' + Convert(varchar, (@PageNumber - 1) * @PageSize) + ' id from T_Test order by id desc) order by id desc'
 exec sp_executesql @sql
GO 

2、设置Ajax控件

想要实现无刷新,肯定会用到Ajax,首先是要放入必不可少的:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager>
接着把Repeater控件嵌入到UpdatePanel里面去:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
          <ul>
            <asp:Repeater ID="Repeater1" runat="server">
              <ItemTemplate>
                <li>
                  <p>
                    <span><%#Eval("username") %>:</span><%#Eval("content").ToString())) %></p>
                  <p>
                    <em>发表时间:
                      <%#Eval("addtime") %>
                    </em>
                  </p>
                </li>
              </ItemTemplate>
            </asp:Repeater>
          </ul>
          <p>
              总记录:<asp:Literal ID="ltlCount" runat="server"></asp:Literal></p>
            <p>
              <webdiyer:AspNetPager ID="AspNetPager1" runat="server" AlwaysShow="true" PageIndexBoxType="DropDownList" >
              </webdiyer:AspNetPager>
            </p>
          </div>
      </ContentTemplate>
    </asp:UpdatePanel>

3、AspNetPager分页控件

可以看到以上的代码有个分页控件,我相信这个分页控件大家都不陌生了,我就不多介绍。必须有AspNetPager.dll,然后在项目中引用,在头部引入这一段代码:

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
这时候分页控件应该就可以使用了。最后在后台绑定一下数据,同时也要绑定AspNetPager控件,完整的后台代码如下:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Wuqi.Webdiyer;
using System.Data.SqlClient; 

public partial class AjaxPager : System.Web.UI.Page
{
  int currentPageNumber;//当前页号
  int pageSize = 5;//每页显示记录条数
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      currentPageNumber = 1;
      ViewState["currentPageNumber"] = currentPageNumber;
      BindData();
    }
    AspNetPager1.PageChanged += new EventHandler(AspNetPager1_PageChanged); //定义控件分页事件
  } 

  //获取记录总数
  private int GetCount()
  {
    string sql = "select COUNT(*) from T_Test";
    DataTable dt = GetTable(sql, CommandType.Text, values);
    if (dt.Rows.Count > 0)
    {
      return Convert.ToInt32(dt.Rows[0][0]);
    }
    else
    {
      return 0;
    }
  } 

  //绑定数据
  private void BindData()
  {
    ltlCount.Text = GetCount().ToString();
    currentPageNumber = Convert.ToInt32(ViewState["currentPageNumber"]);
    SqlParameter[] values = { new SqlParameter("@PageNumber", currentPageNumber), new SqlParameter("@PageSize", pageSize) }; 

    DataTable dt = GetTable("P_Pager", CommandType.StoredProcedure, values); //调用存储过程
    if (dt.Rows.Count > 0)
    {
      AspNetPager1.PageSize = pageSize;
      AspNetPager1.RecordCount = GetCount();
      AspNetPager1.CurrentPageIndex = currentPageNumber;
      this.Repeater1.DataSource = dt.DefaultView;
      this.Repeater1.DataBind();
    }
  } 

  //分页事件
  void AspNetPager1_PageChanged(object sender, EventArgs e)
  {
    currentPageNumber = AspNetPager1.CurrentPageIndex;
    ViewState["currentPageNumber"] = currentPageNumber;
    BindData();
  } 

   // 读取存储过程返回table
  private DataTable GetTable(string sql, CommandType t, params SqlParameter[] values)
  {
    using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=testDB;Persist Security Info=True;User ID=sa;Password=123456"))
    {
      SqlCommand comm = new SqlCommand(sql, conn);
      comm.CommandType = t;
      if (values != null && values.Length > 0)
        comm.Parameters.AddRange(values);
      SqlDataAdapter da = new SqlDataAdapter(comm);
      DataSet ds = new DataSet();
      try
      {
        conn.Open();
        da.Fill(ds);
        return ds.Tables[0];
      }
      catch (Exception)
      {
        return null;
      }
      finally
      {
        conn.Close();
        conn.Dispose();
      }
    }
  }
}

至此,基本大功告成,虽然比较简单,但是涉及到存储过程,Ajax,分页控件等知识点,还是蛮值得收藏和学习的,希望我的这篇文章是抛砖引玉,让大家提供更好的方法,才是我学习的动力。

(0)

相关推荐

  • asp.net利用后台实现直接生成html分页的方法

    本文实例讲述了asp.net利用后台实现直接生成html分页的方法,是一个比较实用的功能.分享给大家供大家参考之用.具体方法如下: 1.建立存储过程: ALTER procedure [dbo].[p_news_query] @Page int as begin select top 5 new_id,new_title,new_url,new_content_text,create_time,user_name from (select *,ROW_NUMBER() over(order by

  • asp.net实现简单分页实例

    本文实例讲述了asp.net实现简单分页的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: /// <summary> /// 分页内容 /// </summary> /// <param name="size">页面大小</param> /// <param name="count">页面数量</param> /// <param name="curren

  • Asp.Net之JS生成分页条的方法

    Default.aspx.cs中的代码 protected int pageIndex = 1; protected int pageSize = 10; protected int pageCount = 100; protected string name = string.Empty; protected void Page_Load(object sender, EventArgs e) { int.TryParse(Request.QueryString["pageIndex"

  • ASP.NET无刷新分页简单实现

    下面就是和大家分享的实现无刷新分页功能的全部步骤,欢迎学习. 1.新建一个分页存储过程: CREATE procedure [dbo].[P_Pager] (@PageNumber int, @PageSize int) as declare @sql nvarchar(4000) set @sql = 'select top ' + Convert(varchar, @PageSize) + ' * from T_Test where [type]=1 and id not in (selec

  • asp.net 无刷新分页实例代码

    数据类代码: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Collections;using System.Reflection; namespace DAL{    public  class UserManageClass    {  

  • asp.net 无刷新翻页就是这么简单

    个人喜欢用Repeater,因其简洁,此AjaxPager定向为Repeater! 一步一步看来: 代码 复制代码 代码如下: [DefaultProperty("TotalRecord"), ToolboxData("<{0}:AjaxPager runat=server></{0}:AjaxPager>")] public class AjaxPager : WebControl,ICallbackEventHandler { publi

  • asp.net使用AJAX实现无刷新分页

    查询功能是开发中最重要的一个功能,大量数据的显示,我们用的最多的就是分页. 在ASP.NET 中有很多数据展现的控件,比如Repeater.GridView,用的最多的GridView,它同时也自带了分页的功能.但是我们知道用GridView来显示数据,如果没有禁用ViewState,页面的大小会是非常的大的.而且平时我们点击首页,下一页,上一页,尾页这些功能都是会引起页面回发的,也就是需要完全跟服务器进行交互,来回响应的时间,传输的数据量都是很大的. AJAX的分页可以很好的解决这些问题. 数

  • ajax无刷新分页的简单实现

    本文实例为大家分享了ajax无刷新分页的具体代码,供大家参考,具体内容如下 html页 <html> <head> <title></title> <style type="text/css"> table{ border:solid 1px #444; background-color:Aqua;} table td{border:solid 1px #444;} </style> <script src=

  • 简单实现Ajax无刷新分页效果

    Ajax无刷新分页效果,如下代码实现 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax无刷新分页效果</title> <script type="text/javascript"> function showpage(url) { var xhr = new XML

  • asp.net Mvc4 使用ajax结合分页插件实现无刷新分页

    本文为在mvc4中使用ajax实现无刷新分页demo,记录一下. 解决方案思想:页面数据的初始加载和按页加载都是通过ajax来进行,页面分页链接点击后利用ajax技术发送当前页码到后端控制器,后端控制器根据当前页码和设置的pageSize从数据库中取出对应页的数据.后端控制器处理完后利用PartialView方法把数据返回到分部视图中,利用ViewBag来返回总记录数和pageSize.ajax通过回调函数把控制器返回的分部视图内容加载到主视图中显示. 说明:分页具体的分页导航和样式使用了kkp

  • asp.net jquery无刷新分页插件(jquery.pagination.js)

    采用Jquery无刷新分页插件jquery.pagination.js 实现无刷新分页效果 友情提示:本示例Handler中采用StringBuilder的append方法追加HTML,小数据量可以,但是大数据或是布局常变,建议返回JSON格式的数据,性能和灵活性更好! 1.插件参数列表  2.页面内容: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defaul

  • Ajax+smarty技术实现无刷新分页

    这里运用Smarty模板,更简单 本文主要的技术:AJAX,PHP,Smarty,另外自己封装了一个很简单的类 类: (function(){ function $(id) { return document.getElementById(id); } $.init=function() { try{return new XMLHttpRequest();}catch(e){}; try{return new ActiveXObject('Microsoft.XMLHTTP');}catch(e

  • 详解PHP+AJAX无刷新分页实现方法

    PHP+AJAX无刷新分页实现代码详解,最近在看ajax 教程,就想写个简单入门的PHP+AJAX无刷新分页,我们依据ajax开发框架,代码如下: var http_request=false; function send_request(url){//初始化,指定处理函数,发送请求的函数 http_request=false; //开始初始化XMLHttpRequest对象 if(window.XMLHttpRequest){//Mozilla浏览器 http_request=new XMLH

随机推荐