由于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") { // 操作 } } }