由于repeater 控件具有的一个特性--循环 <ItemTemplate>的内容,Repeater 控件里的某个元素对象的绑定与获取,不像平常的,直接使用控件的 id 便可以给该控件进行操作控制。
<asp:textbox ID="text" runat="server" /> this.text.InnerHTml = "the textbox's text is 'Welcome To Here!'";
也因为id的唯一性,凡是在repeater控件包含的控件的id都是会根据浏览器或其他什么的……,在程序员定义的id里加上一些特定的标识,以保证id的唯一性。
1. asp:Repeater 控件代码
<asp:Repeater ID="RepDataList" runat="server" OnItemDataBound="repDataBind" OnItemCommand="repDataCommand">
<ItemTemplate>
<asp:HiddenField ID="hdNo" runat="server" Value='<%# DataBinder.Eval(Container.DataItem,"No")%>' />
<asp:HiddenField ID="hdStatus" runat="server" Value='<%# DataBinder.Eval(Container.DataItem,"Status")%>' />
<asp:LinkButton ID="btnUpdateStatus" runat="server" CommandName="updateStatus" >凍結</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
2. asp:Repeater 控件事件
RepeaterItemEventArgs 事件,绑定repeater控件项事件,使用 OnItemDataBound 属性来绑定调用
protected void repDataBind(object sender, RepeaterItemEventArgs e) {
if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
// 通过id获取包含在Repeater控件里某一个控件
HiddenField hdServerNo = (HiddenField)e.Item.FindControl("hdServerNo");
LinkButton linkBtn = (LinkButton)e.Item.FindControl("btnUpdateStatus");
// ………………
}
}
RepeaterCommandEventArgs 项操作控制,用 OnItemCommand 来绑定调用
protected void repDataCommand(object source, RepeaterCommandEventArgs e) {
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
// 通过name属性绑定控件
if (e.CommandName == "updateStatus") {
// 操作
}
}
}