asp.net中repeater控件的嵌套和实现分页

前台的代码
 
 <%--这里是头模板--%> 
 <%--项模板--%> 
 <%--分隔符模板--%> 
 <%--页脚模板--%> 
作者 书籍
<%# Eval( "au_lname ")%> <%# Eval( "[\ "title_id\ "] ")%>

页 当前为第

在cs文件中的写法:

public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{//注释都在语句下面: 
if (!IsPostBack) 
{ 
Repeater1.DataSource = pds(); 
//为Repeater1控件指定数据源 
Repeater1.DataBind(); 
//这个当然是必须的,绑定上去 
} 
} 
private PagedDataSource pds() 
{ 
string connstring = ConfigurationManager.ConnectionStrings[ "Pubconn "].ConnectionString; 
//声明一个字符串,后面随时可以用 
SqlConnection con = new SqlConnection(connstring); 
//初始化连接 
SqlDataAdapter sda = new SqlDataAdapter( "select * from authors ", con); 
//初始化一个SqlDataAdapter,并给出查询语句 
DataSet ds = new DataSet(); 
//初始化一个DataSet 
sda.Fill(ds, "name "); 
//将上面查询到的数据填充到name表中 
SqlDataAdapter sda2 = new SqlDataAdapter( "select * from titleauthor ", con); 
//同上 
sda2.Fill(ds, "title "); 
//同上 
ds.Relations.Add( "myrela ", ds.Tables[ "name "].Columns[ "au_id "], ds.Tables[ "title "].Columns[ "au_id "]); 
//为上面建立的两个表创建一个关系,指明父列和子列的名称并为他们的关系命名,前面将会用到 

PagedDataSource pds = new PagedDataSource(); 
//初始化一个PagedDataSource,允许控件分页 
pds.DataSource = ds.Tables[ "name "].DefaultView; 
//将上面的ds转换成标准数据视图 
pds.AllowPaging = true; 
//允许分页 
pds.PageSize = 5; 
//每页大小为5 
pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString[ "page "]); 
//设置当前页 
return pds; 
//将处理完毕的pds对象发出去 
} 
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
if (e.Item.ItemType == ListItemType.Footer) 
{//判断当前项是页脚模板 
int n = pds().PageCount;//将分页总数赋给变量n 
int i = pds().CurrentPageIndex;//将当前分页码赋给i 

Label lblpc = (Label)e.Item.FindControl( "lblpc "); 
lblpc.Text = n.ToString(); 
//找到lblpc这个Label,将总页码赋给他 
Label lblp = (Label)e.Item.FindControl( "lblp "); 
lblp.Text = Convert.ToString(pds().CurrentPageIndex + 1); 
//找到lblp这个Label,将当前页码赋给他,但是注意,因为页码从0开始,这里要直观的话就得加1 
HyperLink hlfir = (HyperLink)e.Item.FindControl( "hlfir "); 
hlfir.NavigateUrl = "?page=0 "; 
HyperLink hlla = (HyperLink)e.Item.FindControl( "hlla "); 
hlla.NavigateUrl = "?page= " + Convert.ToInt32(n - 1); 
//找到表示最前页和末页的Label,为他们的NavigateUrl属性赋为第0页和最大页码减1 
HyperLink hlp = (HyperLink)e.Item.FindControl( "hlp "); 
HyperLink hln = (HyperLink)e.Item.FindControl( "hln "); 
//找到表示上页和下页这两个控件 
if (i <= 0) 
{//如果当前页已经是第0页 
hlp.Enabled = false; 
hlfir.Enabled = false; 
hln.Enabled = true; 
} 
else 
{ 
hlp.NavigateUrl = "?page= " + Convert.ToInt32(i - 1); 
} 
if (i > n-2 ) 
{//如果当前项已经是最末页 
hln.Enabled = false; 
hlla.Enabled = false; 
hlp.Enabled = true; 
} 
else 
{ 
hln.NavigateUrl = "?page= " + Convert.ToInt32(i + 1); 
} 
} 
} 
} 



 

你可能感兴趣的:(asp.net,hyperlink,dataset,server,asp,object,编程)