今天才知道有个AspNetPager控件可以分页!问题1:我直接将AspNetPager.dll.refresh,AspNetPager.dll这两个文件拷贝到bin文件夹中,然后在选择项中引用AspNetPager.dll,这样安装对吗?
选项卡中可以看见AspNetPager控件,但是在运行网站是,总是提示找不到程序集AspNetPager.dll,并且显示的路径和我的网站的程序路径不一样。这对我的网站运行和AspNetPager控件使用有影响吗?问题2:稀里糊涂的改写了以下代码,程序可以运行,分页栏也可以看见,但是当我点击第二页或者第X页,网页跳转后什么也不显示,一片空白,似乎没有重新绑定数据,不知道这是为何?
以上问题请大家指教!谢谢<%@ Page Language="C#" %>
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%Response.Expires =-1000;%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">
    protected void AspNetPager1_PageChanged(object src, EventArgs e)
    {
        binddata();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) 
        {
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("app_data\\db.mdb"));
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select count(*) from player";
            conn.Open();
            AspNetPager1.RecordCount = (int)cmd.ExecuteScalar();
            conn.Close();            binddata();
        }
    }
    protected void binddata()
    {
        OleDbConnection bindconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("app_data\\db.mdb"));
        OleDbDataAdapter bindda = new OleDbDataAdapter( "select * from player order by id desc",bindconn); 
        bindconn.Open();
        DataSet ds = new DataSet();
        bindda.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "mydata");
        DataTable dt=ds.Tables["mydata"];
        Repeater1.DataSource = dt;
        Repeater1.DataBind();      
    }
    
    
</script><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server" enableviewstate="false">
    <div>
        <table>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
            <tr><td><%#Eval("id") %></td><td><%#Eval("name") %></td><td><%#Eval("age") %></td></tr>
            </ItemTemplate>
        </asp:Repeater>
        </table>
    </div>
    <div>
        <webdiyer:AspNetPager ID="AspNetPager1" runat="server" ShowMoreButtons="false" 
            ShowPageIndexBox="Never" PageSize="5">
        </webdiyer:AspNetPager>
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    只需将AspNetPager.dll和AspNetPager.xml这两个文件拷贝到bin文件夹,不需要引用什么。
      

  2.   

    你需要给PageIndexChanging事件编写代码,才能分页。参考
      

  3.   

    或者启用url分页  UrlPager="true" 然后后台 request["page"]获取当前页也可以
      

  4.   

    根据楼上几位的提示,我添加了 
    protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
        {
            AspNetPager1.CurrentPageIndex = e.NewPageIndex;
            binddata();
        }
    可是,奇怪的是:无论我点击第几页CurrentPageIndex都等于1,页面也不跳转,始终显示第一页的数据,同时,下面的分页超连接也消失了。
    请指教!
      

  5.   

    每次绑定时都要指定RecordCount总记录数。
      

  6.   

    你可以看一下这个http://www.cnblogs.com/bq-blog/archive/2010/03/09/1681631.html
      

  7.   

    根据5楼的提示:每次绑定都要指定数据总数,我把原来的代码修改为
    <script runat="server">    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) 
            {
                binddata();
            }
        }
        
        
        private void binddata()
        {
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("app_data\\db.mdb"));
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select count(*) from player";
            conn.Open();
            AspNetPager1.RecordCount = (int)cmd.ExecuteScalar();
            conn.Close();
            
            OleDbConnection bindconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("app_data\\db.mdb"));
            OleDbDataAdapter bindda = new OleDbDataAdapter( "select * from player order by id desc",bindconn); 
            bindconn.Open();
            DataSet ds = new DataSet();
            bindda.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "mydata");
            DataTable dt=ds.Tables["mydata"];
            Repeater1.DataSource = dt;
            Repeater1.DataBind();
            bindconn.Close();
        }
        protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
        {
            AspNetPager1.CurrentPageIndex = e.NewPageIndex;
            Response.Write(e.NewPageIndex);
            Response.Write(AspNetPager1.CurrentPageIndex);
            binddata();
        }
    </script>
    可是,为什么e.NewPageIndex能显示正常的页码,但是AspNetPager1.CurrentPageIndex永远的都是1,我用AspNetPager1.CurrentPageIndex = e.NewPageIndex;给他赋值了啊!
    请指教,谢谢
      

  8.   

    先把AspNetPager.dll文件复制到bin文件夹下
    再添加这个:<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %>
    然后前台:
    <webdiyer:AspNetPager ID="AspNetPager1" runat="server" 
                    CustomInfoHTML="共%PageCount%页,当前为第%CurrentPageIndex%页,每页%PageSize%条" 
                    FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" 
                    PageIndexBoxType="DropDownList" PrevPageText="上一页" 
                    ShowCustomInfoSection="Left" ShowPageIndexBox="Always" SubmitButtonText="Go" 
                    TextAfterPageIndexBox="页" TextBeforePageIndexBox="转到" LayoutType="Table" onpagechanged="AspNetPager1_PageChanged" 
                   >
                </webdiyer:AspNetPager>
      

  9.   

    private void Databin()
        {
            string cmdText = "select * from Articles";
            AbsDbFactory absDbFactory = AbsDbFactory.CreateFactory();
            IDbHandler db = absDbFactory.CreateServer();        DataTable table = new DataTable();
            table = db.GetDataTable(cmdText);
            PagedDataSource pds = new PagedDataSource();
            pds.DataSource = table.DefaultView;
            //分页数目
            pds.PageSize = 10;
            //是否分页
            pds.AllowPaging = true;
            //总页数
            pageCount = pds.PageCount;
            //
            this.Label4.Text =Convert.ToString(pageCount);        //下标从0开始,所以-1;
            pds.CurrentPageIndex = currentPage - 1;
            this.Label2.Text = Convert.ToString(currentPage);        DataList1.DataSource = pds;
            DataList1.DataBind();
        }后面要随时更新CurrentPageIndex的值
      

  10.   

    我的问题总之就是CurrentPageIndex总是指向1
    不随着NewPageIndex改变
      

  11.   

    我用了一个本办法解决了我的问题,不知道为什么用网上的方法总是不能解决。
    希望对和我一样刚开始学习使用该控件的人有所帮助
    <%@ Page Language="C#" %>
    <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)         {
               jisuanzongshu();//调用计算记录总数的函数,每次绑定数据都调用
                binddata();
            }
        }
     
        private void jisuanzongshu()
        {
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("app_data\\db.mdb"));
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select count(*) from player";
            conn.Open();
            AspNetPager1.RecordCount = (int)cmd.ExecuteScalar();
            conn.Close();
        }
        
        private void binddata()
        {
            OleDbConnection bindconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("app_data\\db.mdb"));
            OleDbDataAdapter bindda = new OleDbDataAdapter( "select * from player order by id desc",bindconn); 
            bindconn.Open();
            DataSet ds = new DataSet();
            bindda.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "mydata");
            DataTable dt=ds.Tables["mydata"];
            Repeater1.DataSource = dt;
            Repeater1.DataBind();
            bindconn.Close();
            Response.Write("总数"+AspNetPager1.RecordCount); 
            Response.Write("尺寸"+AspNetPager1.PageSize);
            Response.Write("当前页"+AspNetPager1.CurrentPageIndex);
          }
     
         protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
        {
            //每次绑定数据和指定当前页时,都要指定数据记录总数
             jisuanzongshu();   
            AspNetPager1.CurrentPageIndex = e.NewPageIndex;
            binddata();
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server" enableviewstate="false">
        <div>
            <table>
            <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                <tr><td><%#Eval("id") %></td><td><%#Eval("name") %></td><td><%#Eval("age") %></td></tr>
                </ItemTemplate>
            </asp:Repeater>
            </table>
        </div>
        <div>
            <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="10"  OnPageChanging="AspNetPager1_PageChanging" CurrentPageIndex="3">
            </webdiyer:AspNetPager>
        </div>
        </form>
    </body>
    </html>