ASP.NET Repeater 如何自定义分页,请晒成功源码?本人初学,还不懂,但为了找工作,急需知道如何实现和使用,请高手帮忙?!

解决方案 »

  1.   

    晒不出来代码了,不过可以帮你。你说的自定义分页是不用第三方*.dll吗?如果是那代码就多了。反之,就很简单。
      

  2.   


    html代码:
    <asp:Repeater ID="rpTest" runat="server" OnItemDataBound="rpTest_ItemDataBound">
    <HeaderTemplate>
        <table>
          <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Text</th>
          </tr> 
    </HeaderTemplate>
    <ItemTemplate>                
        <tr>
          <td><%# DataBinder.Eval(Container.DataItem,"rID") %></td>
          <td><%# DataBinder.Eval(Container.DataItem,"rTitle") %></td>
          <td><%# DataBinder.Eval(Container.DataItem,"rText") %></td>
        </tr>                
    </ItemTemplate>
    <AlternatingItemTemplate>
        <tr>
          <td><%# DataBinder.Eval(Container.DataItem,"rID") %></td>
          <td><%# DataBinder.Eval(Container.DataItem,"rTitle") %></td>
          <td><%# DataBinder.Eval(Container.DataItem,"rText") %></td>
        </tr>
    </AlternatingItemTemplate>
    <FooterTemplate>
        <tr>
          <td colspan="3">
            第<asp:Label ID="lblCurrentPage" runat="server" Text=""></asp:Label>页
            共<asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label>页
            <asp:HyperLink ID="hlFirst" runat="server" Text="第一页"></asp:HyperLink>
            <asp:HyperLink ID="hlPrevious" runat="server" Text="上一页"></asp:HyperLink>
            <asp:HyperLink ID="hlNext" runat="server" Text="下一页"></asp:HyperLink>
            <asp:HyperLink ID="hlLast" runat="server" Text="尾页"></asp:HyperLink>             
          </td>
        </tr>
    </table>                
    </FooterTemplate>
    </asp:Repeater> 
    前台代码主要是数据的绑定显示,后台代码为:
    protected void Page_Load(object sender, EventArgs e)
    {
       if (!IsPostBack)
       {
          //设置Repeater的数据源并绑定
          rpTest.DataSource = pds();
          rpTest.DataBind();
       }
    }
    /// <summary>
    /// 获得PagedDataSource
    /// </summary>
    public PagedDataSource pds()
    {
        //获取数据集
        SqlConnection con = new SqlConnection("server=.;database=repeater;uid=sa;pwd=");
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from tbRepeater", con);
        SqlDataAdapter sda = new SqlDataAdapter();
        sda.SelectCommand = cmd;
        DataSet ds = new DataSet();
        sda.Fill(ds, "tbRepeater");
        //创建PagedDataSource
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = ds.Tables["tbRepeater"].DefaultView;//必须设为DefaultView,不能设置成Table
        //设置PagedDataSource分页属性
        pds.AllowPaging = true;
        pds.PageSize = 2;
        pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);
        return pds;
    }
    /// <summary>
    /// Repeater绑定事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void rpTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
       if (e.Item.ItemType == ListItemType.Footer)//页脚绑定时
       {
                //获得各分页所用到的控件
                Label lblCurrentPage = (Label)e.Item.FindControl("lblCurrentPage");
                Label lblPageCount = (Label)e.Item.FindControl("lblPageCount");
                HyperLink hlFirst = (HyperLink)e.Item.FindControl("hlFirst");
                HyperLink hlPrevious = (HyperLink)e.Item.FindControl("hlPrevious");
                HyperLink hlNext = (HyperLink)e.Item.FindControl("hlNext");
                HyperLink hlLast = (HyperLink)e.Item.FindControl("hlLast");
                DropDownList ddlJumpPage = (DropDownList)e.Item.FindControl("ddlJumpPage");          
                //当前页码和总页数
                int pagecount = pds().PageCount;
                int currentpage = pds().CurrentPageIndex;            
                //当前页为第一页时的设置
                if (currentpage <= 0)
                {
                    hlFirst.Enabled = false;
                    hlPrevious.Enabled = false;
                    hlNext.Enabled = true;
                    hlLast.Enabled = true;
                }
                else
                {
                    hlPrevious.NavigateUrl = "?page=" + (currentpage - 1);
                }
                //当前页为尾页时的设置
                if (currentpage >= pagecount - 1)
                {
                    hlFirst.Enabled = true;
                    hlPrevious.Enabled = true;
                    hlNext.Enabled = false;
                    hlLast.Enabled = false;
                }
                else
                {
                    hlNext.NavigateUrl = "?page=" + (currentpage + 1);
                }
                //第一页和最后一页设置
                hlFirst.NavigateUrl = "?page=0";
                hlLast.NavigateUrl = "?page=" + (pagecount - 1);
                //页码和总数显示
                lblCurrentPage.Text = (currentpage + 1).ToString();
                lblPageCount.Text = pagecount.ToString();
       }
    }
    写完之后,Repeater控件就可以有分页的功能了.再加上一些自己的CSS代码,也可以把分页的各按钮做得很有个性化.
    不管是GridView还是Repeater控件,如果在一个项目中,对这些控件的某些功能用得比较多.比如GridView控件,绑定数据后,我们想让它有全选操作,有修改跳页面操作,有删除提示功能操作,等等......而这些操作又是在每用一次GridView中都会用到的.如果我们每次都去写一次这些代码,那必将会浪费很多的开发时间.其实我们是可以自己做一个有扩展功能的GridView控件的.把自己想要的功能都加到其中,把它做成一个用户自定义控件.这样就避免了很多重复代码编写了.
      

  3.   

    PagedDataSource pds = new PagedDataSource();
    pds.DataSource = 数据源;            pds.AllowPaging = true;
                pds.PageSize = 10;
                pds.CurrentPageIndex = this.GridView1.PageIndex;
    this.GridView1.DataSource = pds;
                this.GridView1.DataBind();
    Repeater 是一样用
      

  4.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;using System.Data.SqlClient;
    using System.Collections.Generic;public partial class DataLlist : System.Web.UI.Page
    {
         //static int pagen=0;//当前第 pagen+1 页    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                MyDs();
                ViewState["pagen"] = 0;//当前第 pagen+1 页
            }
        }    private void MyDs()
        {
           
            try
            {
               // int s = pagen * 10;
                SqlConnection con = DBGet.Getcon();
                
                //子查询分页 (一)            //string sql = "select top 5 * from books  where id not in( select top " + s + " id from books order by id  )";
                //SqlDataAdapter adapter = new SqlDataAdapter(sql, con);
                //DataSet ds = new DataSet();
                //adapter.Fill(ds, "books");            //this.dataList.DataSource = ds.Tables[0].DefaultView;
                //this.dataList.DataBind();
                //pagedataSource 分页
                string sql = "select  * from books";//所有数据
                SqlDataAdapter adapter = new SqlDataAdapter(sql, con);
                DataSet ds = new DataSet();
                adapter.Fill(ds, "books");            PagedDataSource pgds = new PagedDataSource();//
                pgds.DataSource = ds.Tables[0].DefaultView;//数据绑定
                pgds.AllowPaging = true;//允许分页
                pgds.PageSize = 6;//每页数据量
                pgds.CurrentPageIndex = (Convert.ToInt32(ViewState["pagen"]));//设置显示当前第几页
               
                SetEnable(pgds);//是否可点??
                
                this.Repeater.DataSource =pgds ;
                this.Repeater.DataBind();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
        }
        private void SetEnable(PagedDataSource pgds)//设置是否可点
        {
            this.lbtnpre.Enabled = true;
            this.lbtnNext.Enabled = true;
         if(pgds.IsFirstPage)
         {
             this.lbtnpre.Enabled = false;     }
            if(pgds.IsLastPage)
            {
                this.lbtnNext.Enabled = false;
            }
        }
        public string  GetUrl(Object temp)//图片路径
        {
          
            string path = "Images/9787900107954.jpg";
            if (temp != null)
            {
                string imgpath = "Images/" + temp.ToString() + ".jpg";
                path = imgpath;
            }
            return path;
        }
        public string MySub(object str,int n) //截取字符串
        {
            string s = null;
         if(str!=null )
         {
             if (str.ToString().Length > n)//检查是否大于指定长度
             {
                  s = str.ToString().Substring(0, n) + "...";
             }
             else
             {
                 s = str.ToString();
             }
         }
         return s;
        }
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            //上一页
            //pagen--;       ViewState["pagen"]= ((int)ViewState["pagen"])-1;//改变页码
            MyDs();
        }
        protected void LinkButton2_Click(object sender, EventArgs e)
        {
            //下一页
            ViewState["pagen"] = ((int)(ViewState["pagen"]))+1;  
            MyDs();
        }
        protected void dataList_SelectedIndexChanged(object sender, EventArgs e)
        {    }
    }
      

  5.   

    前台代码:
    <table class="tab">
            <asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand" >
            <HeaderTemplate>
            <tbody>
                <tr>
                    <td>编号</td>
                    <td>用户名称</td>
                    <td>密码</td>
                    <td>操作</td>
                </tr>
             </tbody>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td><%# DataBinder.Eval(Container.DataItem, "userid")%>
                    </td>
                    <td><%# DataBinder.Eval(Container.DataItem, "username")%>
                    </td>
                    <td><%# DataBinder.Eval(Container.DataItem, "password")%>
                    </td>
                    <td>
                        <asp:Button ID="Button3" runat="server" UseSubmitBehavior="true" Text="Button" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"userid") %>' CommandName="ButtonOnClick" />
                    </td>
                </tr>
            </ItemTemplate>
            <AlternatingItemTemplate>
                <tr>
                    <td class="no"><%# DataBinder.Eval(Container.DataItem, "userid")%>
                    </td>
                    <td class="no"><%# DataBinder.Eval(Container.DataItem, "username")%>
                    </td>
                    <td class="no"><%# DataBinder.Eval(Container.DataItem, "password")%>
                    </td>
                    <td>
                        <asp:Button ID="Button3" runat="server" Text="Button" UseSubmitBehavior="true" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"userid") %>' CommandName="ButtonOnClick" />
                    </td>
                </tr>
            </AlternatingItemTemplate>
            <FooterTemplate>
                <tr>
                    <td colspan="4">
                        <asp:LinkButton ID="FirstPage" runat="server" OnClick="FirstPage_OnClick">首页</asp:LinkButton>
                    
                        <asp:LinkButton ID="UpPage" runat="server" OnClick="UpPage_OnClick">上一页</asp:LinkButton>
                        
                        第<asp:Label ID="ThisPage" runat="server" Text="1"></asp:Label>页 共<asp:Label ID="AllCountPage" runat="server" Text="1"></asp:Label>页
                        
                        <asp:LinkButton ID="NextPage" runat="server" OnClick="NextPage_OnClick">下一页</asp:LinkButton>
                    
                        <asp:LinkButton ID="LastPage" runat="server" OnClick="LastPage_OnClick">末页</asp:LinkButton>
                        
                        <asp:TextBox ID="CountPage" runat="server"></asp:TextBox>
                        <asp:LinkButton ID="SetCountPage" runat="server" OnClick="SetCountPage_OnClick">转</asp:LinkButton>
                    </td>
                </tr>
            </FooterTemplate>
            </asp:Repeater>
            </table>后台代码: public struct PageState
            {            /// <summary>
                /// 当前页
                /// </summary>
                public int ThisPage;
                /// <summary>
                /// 要显示的页数
                /// </summary>
                public int PageSize;
                /// <summary>
                /// 总页数
                /// </summary>
                public int AllPageCount;
                /// <summary>
                /// 记录数
                /// </summary>
                public int Counts;
            }
            protected PageState pagestate;
     
            protected void Page_Load(object sender, EventArgs e)
            {
                pagestate.PageSize = 3;
                pagestate.ThisPage = 1;            if (!IsPostBack)
                {
                    DBind();
                }        }
          /// <summary>
          /// 数据库连接函数
          /// </summary>
          /// <returns></returns>
            //private SqlConnection DBConn()
            //{
            //    string connstr = ConfigurationManager.AppSettings["connectionstring"];
            //    SqlConnection dbconn = new SqlConnection(connstr);        //    return dbconn;
            //}        private void SetCount()
            {
                if (pagestate.ThisPage > pagestate.AllPageCount)
                {
                    pagestate.ThisPage = pagestate.AllPageCount;
                }
                ((Label)Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("ThisPage")).Text = pagestate.ThisPage.ToString();
                TextBox TB = (TextBox)Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("CountPage");
                TB.Text = pagestate.ThisPage.ToString();
                ((Label)Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("AllCountPage")).Text = pagestate.AllPageCount.ToString();
            }        private void DBind()
            {
                string connstr = ConfigurationManager.AppSettings["connectionstring"];
                SqlConnection conn = new SqlConnection(connstr);
                conn.Open();
                
                string sqltxt = "select *  from  usersys";            //SqlCommand cmd = new SqlCommand(sqltxt, conn);            SqlDataAdapter da = new SqlDataAdapter(sqltxt, conn);            DataSet ds = new DataSet();            try
                {                //填充数据集
                    da.Fill(ds);
                    //数据绑定
                    Repeater1.DataSource = ds;                Repeater1.DataBind();                SetCount();
                }
                catch (Exception error)
                {
                    Response.Write(error.ToString());
                }                    }        //首页
            protected void FirstPage_OnClick(object sender, EventArgs e)
            {
                pagestate.ThisPage = 1;
                DBind();
            }        //末页
            protected void LastPage_OnClick(object sender, EventArgs e)
            {
                try
                {
                    pagestate.ThisPage = Int32.Parse(((Label)Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("AllCountPage")).Text);
                }
                catch
                {
                    pagestate.ThisPage = 1;
                }
                DBind();
            }        //上一页
            protected void UpPage_OnClick(object sender, EventArgs e)
            {
                try
                {
                    pagestate.ThisPage = Int32.Parse(((Label)Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("ThisPage")).Text);
                    pagestate.ThisPage--;
                }
                catch
                {
                    pagestate.ThisPage = 1;
                }            if (pagestate.ThisPage <= 0)
                {
                    pagestate.ThisPage = 1;
                }
                DBind();
            }
            //下一页
            protected void NextPage_OnClick(object sender, EventArgs e)
            {
                try
                {
                    pagestate.ThisPage = Int32.Parse(((Label)Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("ThisPage")).Text);
                    pagestate.ThisPage++;
                }
                catch
                {
                    pagestate.ThisPage = 1;
                }
                DBind();
            }
            protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
            {
                switch (e.CommandName)
                {
                    case "ButtonOnClick":
                        int i = Convert.ToInt32(e.CommandArgument);
                        break;
                }
            }        //转
            protected void SetCountPage_OnClick(object sender, EventArgs e)
            {
                TextBox TB = (TextBox)Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("CountPage");
                if (TB.Text == "")
                {
                    return;
                }
                try
                {
                    pagestate.ThisPage = Int32.Parse(TB.Text);
                    if (pagestate.ThisPage <= 0)
                    {
                        pagestate.ThisPage = 1;
                    }
                }
                catch
                {
                    pagestate.ThisPage = 1;
                }
                DBind();
            }      
               }为什么不能实现分页呢?多多给分,请大家帮帮忙!!
      

  6.   

    public void Page_Load(Object src,EventArgs e)  
    {  
    OleDbConnection objConn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\test.mdb");  
    OleDbDataAdapter objCommand=new OleDbDataAdapter("select * from Tb",objConn);  
    DataSet ds=new DataSet();  
    objCommand.Fill(ds);  
    //对PagedDataSource 对象的相关属性赋值  
    PagedDataSource objPds = new PagedDataSource();  
    objPds.DataSource = ds.Tables[0].DefaultView;  
    objPds.AllowPaging = true;  
    objPds.PageSize = 5;  
    int CurPage;  //当前页面从Page查询参数获取  
    if (Request.QueryString["Page"] != null)  
    CurPage=Convert.ToInt32(Request.QueryString["Page"]);  
    else  
    CurPage=1;  objPds.CurrentPageIndex = CurPage-1;  
    lblCurrentPage.Text = "Page: " + CurPage.ToString();  if (!objPds.IsFirstPage)  
    lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage-1);  if (!objPds.IsLastPage)  
    lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + Convert.ToString(CurPage+1);  //把PagedDataSource 对象赋给Repeater控件  
    Repeater1.DataSource=objPds;  
    Repeater1.DataBind();  
    }
    ASPNETPAGER分页控件
      

  7.   

    我希望,分页中有:
     第<asp:Label ID="lblCurrentPage" runat="server" Text=""></asp:Label>页
            共<asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label>页
    <asp:LinkButton ID="FirstPage" runat="server" OnClick="FirstPage_OnClick">首页</asp:LinkButton>
        
      <asp:LinkButton ID="UpPage" runat="server" OnClick="UpPage_OnClick">上一页</asp:LinkButton>
        
      第<asp:Label ID="ThisPage" runat="server" Text="1"></asp:Label>页 共<asp:Label ID="AllCountPage" runat="server" Text="1"></asp:Label>页
        
      <asp:LinkButton ID="NextPage" runat="server" OnClick="NextPage_OnClick">下一页</asp:LinkButton>
        
      <asp:LinkButton ID="LastPage" runat="server" OnClick="LastPage_OnClick">末页</asp:LinkButton>
        
      <asp:TextBox ID="CountPage" runat="server"></asp:TextBox>
      <asp:LinkButton ID="SetCountPage" runat="server" OnClick="SetCountPage_OnClick">转</asp:LinkButton>这些实现代码怎么写呢
      

  8.   

     第<asp:Label ID="ThisPage" runat="server" Text="1"></asp:Label>页 共<asp:Label ID="AllCountPage" runat="server" Text="1"></asp:Label>页<asp:LinkButton ID="FirstPage" runat="server" OnClick="FirstPage_OnClick">首页</asp:LinkButton>
        
      <asp:LinkButton ID="UpPage" runat="server" OnClick="UpPage_OnClick">上一页</asp:LinkButton>
        
         
      <asp:LinkButton ID="NextPage" runat="server" OnClick="NextPage_OnClick">下一页</asp:LinkButton>
        
      <asp:LinkButton ID="LastPage" runat="server" OnClick="LastPage_OnClick">末页</asp:LinkButton>
        
      <asp:TextBox ID="CountPage" runat="server"></asp:TextBox>
      <asp:LinkButton ID="SetCountPage" runat="server" OnClick="SetCountPage_OnClick">转</asp:LinkButton>这些实现代码怎么写呢
      

  9.   

    试试AspNetPager,不用花那么多时间自己写代码和调试。