asp.net动态网站repeater控件使用及分页操作介绍

asp.net动态网站repeater控件使用及分页操作介绍

1.简单介绍

Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表。Repeater 控件没有自己内置的呈现功能,这意味着用户必须通过创建模板来提供 Repeater 控件的布局。当网页运行时,Repeater 控件会循环通过数据源中的记录,并为每个记录呈现一个项。


2.布局

一个完整的Repeater包括:

<!--头部模板,放表格开始及第一行标题-->
<HeaderTemplate></HeaderTemplate> 
<!--项目模板,会进行循环显示,放置表格第二行-->
<ItemTemplate></ItemTemplate>
<!--底部模板,放表格结束部分-->
<FooterTemplate> </FooterTemplate>

3.使用repeater进行数据绑定

代码见下

//从Person表中查出所有数据
string sqlselect = "select * from Person";
//使用自己封装好的类从数据库里查询信息,返回一个DataTable类型的数据
DataTable dt = SQLHelper.DataT(sqlselect);
//将数据绑定到repeater的数据源上
this.RptPreson.DataSource = dt;
//显示数据
this.RptPreson.DataBind();

4.repeater的删除功能

在Repeater中添加删除的LinkButton:

<asp:LinkButton ID="lbtDelete" CommandName="Delete" CommandArgument='<%#Eval("id") %>' runat="server">删除</asp:LinkButton> 

给LinkButton的CommandName属性和CommandArgument属性赋值,然后通过OnCommand事件中,就可以得到CommandEventArgs类中的数据,从而到判断是哪个LinkButton被按动了。CommandEventArgs类存储了与Button事件相关的数据,并且可以在事件处理中通过CommandEventArgs类的属性来访问这些数据。说的明白些,就是当LinkButton被按动后,这个LinkButton所触发的数据都被储存到服务器的CommandEventArgs类中,访问CommandEventArgs类中的属性也就访问了被按动的LinkButton了。
简单地讲,系统通过CommandName来确定哪一类Button被按下,进而确定应该执行的操作,通过CommandArgument来确定应该对哪一条数据进行操作。

if (e.CommandName == "Delete")
	{//删除行内容命令  
		id = int.Parse(e.CommandArgument.ToString());
		string sqlDelete = "delete from Person where ID='" + Convert.ToInt32(id) + "'";
		SQLHelper.OperateSql(sqlDelete);
		Response.Write("<script>alert('删除成功'),location='Person.aspx'</script>");
	}

5.repeater实现分页操作

//PagedDataSource 类封装 Repeater控件的属性,这些属性使之可以执行分页。
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dt.DefaultView;     //获取或设置数据源
pds.AllowPaging = true;//允许分页
pds.PageSize = 2;//单页显示项数
lbTotal.Text = pds.PageCount.ToString();//获取页面总数
int CurPage=1;
pds.CurrentPageIndex = CurPage - 1;////当前页数,因为从0开始,所以接收到的数减1
RptBook.DataSource = pds;//将数据绑定到repeater控件上
RptBook.DataBind();

6.repeater嵌套使用

<asp:Repeater ID="RptPerson" runat="server" OnItemDataBound="RptPerson_ItemDataBound">
        <ItemTemplate>
            <h2>
            姓名:
           <%#Eval("name") %>
                </h2>
            <h3>拥有的书籍</h3>
            <%--嵌套Repeater,显示每个人的书籍 --%>
            <asp:Repeater ID="RptBook" runat="server" OnItemCommand="RptBook_ItemCommand">
                <ItemTemplate>
                    <%#Eval("book") %>
                </ItemTemplate>
            </asp:Repeater>
            <%--嵌套Repeater结束--%>
            <br />
        </ItemTemplate>
    </asp:Repeater>

后台.cs文件部分:
Repeater数据分为 Item 和AlternatingItem ,比如 第一行 数据是Item,第二行 数据是AlternatingItem ,第三行 数据是Item……….

//
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
{


}

//作用就是判断Reaperter的第几行

Repeater嵌套实现“楼中楼”

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
      //找到外层Repeater的数据项
        DataRowView rowv = (DataRowView)e.Item.DataItem;
        //提取外层Repeater的数据项的ID
        int ID = Convert.ToInt32(rowv["ID"]);
        //找到对应ID下的Book
        string select = "select * from Book where ownerid=" + ID.ToString();
        //找到内嵌Repeater
        Repeater rept = (Repeater)e.Item.FindControl("RptBook");
        //数据绑定
        rept.DataSource = SQLHelper.SelectS(select);
        rept.DataBind();
		
    }
原文地址:https://www.cnblogs.com/FZfangzheng/p/7782976.html