2013-04-22 121 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")