2013-04-22 124 views
2

我如何获得它位于另一个中继器的文本框?访问控制:嵌套中继器

<asp:Repeater ID="Repeater1" runat="server"> 
<ItemTemplate> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     <asp:Repeater ID="Repeater2" runat="server"> 
     .... 
     </asp:Repeater> 
    </ItemTemplate> 
</asp:Repeater> 

我在repeater2 ItemDataBound和我需要得到的TextBox1的价值,我该怎么做。

Protected Sub Repeater2_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) 

?? 

    End Sub 

回答

4

内中继器的NamingContainer是外RepeaterRepeaterItem,然后使用FindControl得到参考TextBox

protected void Repeater2_ItemDataBound(Object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     Repeater innerRepeater = (Repeater) sender; 
     RepeaterItem outerItem = (RepeaterItem) innerRepeater.NamingContainer; 
     TextBox TextBox1 = (TextBox) outerItem.FindControl("TextBox1"); 
    } 
} 
+0

谢谢,你真的救了我! – user1187282 2013-04-22 14:50:52

1

你应该能够做到:

Dim tb = DirectCast(sender, WebControl).NamingContainer.FindControl("TextBox1")