Repeater控件使用

1.       Repeater 控件的使用

创建数据源,并为Repeater控件设置数据源,然后就可以在<ItemTemplate> 中设置要显示的值。数据源中有多少条数据,都会遍历出来,相当于foreach,如果需要隔行的文字显示不同的样式。就要设置<AlternatingItemTemplate>,在此属性的内容就是偶数行的内容啦,如果需要隔行显示不同样式,则偶数行的数据设置不同的样式即可。可以将偶数行的代码通过div包装一下在放到<AlternatingItem Template>中,就可以通过设置div的样式使得偶数行的数据样式不同啦。  简而言之,<AlternatingItem Template>模版用来显示偶数行的数据。

<HeaderTemplate> 腾飞公司<br /> </HeaderTemplate>表头显示的内容

    <FooterTemplate>CEO:小小鸟</FooterTemplate> 表尾显示的内容

    <SeparatorTemplate><hr /></SeparatorTemplate>数据行之间显示的内容。

可以通过设置Repeater控件的HeaderTemplateFooterTemplate分别为Table的头和尾的方法,把数据以表格的形式渲染到客户端。

在绑定了数据源之后的Repeater控件中,可以使用”<%#Eval(“字段名”)%>”取得数据源中的某个字段的值:

<asp:Label ID="Label1" runat="server" Text='<%#Eval("UserNo") %>'></asp:Label>

姓名:<%#Eval("UserName") %>

性别:<%#Eval("Sex") %>

年龄:<%#Eval("Age") %>

 

注意:用服务器端的控件时候,要注意,在给控件的属性绑定数据的时候,不能加其他的字符串,不然就起不到绑定的效果了。

例如:

<asp:Label ID="Label1" Text='员工ID:<%#Eval("UserNo") %>' runat="server"></asp:Label>

这里的Text属性不能加“员工ID”这些字符。

正确写法:

<asp:Label ID="Label1" Text=' <%#Eval("UserNo") %>' runat="server"></asp:Label>

但是我们可以通过C#代码来处理他:

Text='<%#Eval("UserNo").ToString().Insert(0,"员工ID:")%>'

 

 ItemDataBound事件 绑定每行数据时候都会触发此事件。

对于每行数据显示的时候都会调用ItemDataBound事件,在这个事件中可以对当前行进行处理,时间对象主要成员:

1.e.Item.ItemType为当前行的类型,ItemItemTemplate行、AlternatingItemAlternatingitemTemplate行、还有headerFooter等取值。

2.itemIndex当前行的序号。

3.DataItem当前行绑定的对象。

 

如果要在ItemDataBound事件中对ItemTemplate模版中的控件作处理,则必须使用ruant=ServeraspNet控件或者Html控件,为控件设置id,然后同FindControl方法根据id来取得控件。注意在模版中不能通过控件的id来操作控件。必须用FindControl找到控件才能使用。

代码如下:protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

{

DataRowView rowview=(DataRowView)e.Item.DataItem ; //是一个DataRowView对象。

var PersonRow = (ASP.NET高级_学习.ObjDataSrc.DAL.DataSet1.UserDataRow)rowview.Row;//绑定的是数据库中的一行。

if (PersonRow.UserName == "bitch")

{

Label l1=(Label)e.Item.FindControl("Label1");//通过FindControl方法操作模版中的服务器控件

l1.Text = "This is not a good name";

l1.ForeColor = Color.Red;

}

}

 

ItemCommand事件 点击按钮时会触发此事件。

 

可以在模版中放置button控件(LinkButtonImageButton),模版中的按钮一般不写onclick事件响应,而是响应RepeaterItemCommand事件。

button控件设置CommandNameCommandArgument属性,然后在itemCommand事件中读取eCommandNameCommandArgument属性就可以获得事件的命令和行参数了。如果对数据进行了操作,则需要Repeater1.DataBind()来重新绑定,刷新数据,从数据中刷新最新的数据。

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)

{

if (e.CommandName == "IncAge") //为一类按钮添加相同的处理响应函数。

{

int userno = Convert.ToInt32(e.CommandArgument); //取得命令的参数,就是数据行的id

UserDataTableAdapter user = new UserDataTableAdapter();

user.IncAgeByUserNo(userno);        //对该行数据进行某些操作。

Repeater1.DataBind();               //由于刷新数据

}

}

posted @ 2011-04-17 00:02  GY小小鸟  阅读(1971)  评论(2编辑  收藏  举报