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"]));//设置显示当前第几页
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控件的.把自己想要的功能都加到其中,把它做成一个用户自定义控件.这样就避免了很多重复代码编写了.
pds.DataSource = 数据源; pds.AllowPaging = true;
pds.PageSize = 10;
pds.CurrentPageIndex = this.GridView1.PageIndex;
this.GridView1.DataSource = pds;
this.GridView1.DataBind();
Repeater 是一样用
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)
{ }
}
<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();
}
}为什么不能实现分页呢?多多给分,请大家帮帮忙!!
{
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分页控件
第<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>这些实现代码怎么写呢
<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>这些实现代码怎么写呢