<asp:Repeater ID="rp1" runat="server" OnItemDataBound="rp1_ItemDataBound">
            <ItemTemplate>
                <asp:Repeater ID="rp2" runat="server" OnItemDataBound="rp2_ItemDataBound">
                    <ItemTemplate>
                        <asp:TextBox ID="txt1" runat="server" Width="690px" Height="50px" TextMode="MultiLine"></asp:TextBox>
                        <asp:Repeater ID="rp3" runat="server">
                            <ItemTemplate>
                                <asp:TextBox ID="txt2" runat="server" Width="690px" Height="50px" TextMode="MultiLine"></asp:TextBox>
                            </ItemTemplate>
                        </asp:Repeater>
                    </ItemTemplate>
                </asp:Repeater>
            </ItemTemplate>
        </asp:Repeater>
在sendbtn_Click事件里如何才能取到txt1及txt2的值.

解决方案 »

  1.   

     Button button = sender as Button;
            RepeaterItem item = button.Parent as RepeaterItem;
            TextBox tt = item.FindControl("txt1") as TextBox ;
            Response.Write("<script>alert('"+tt.Text+"');</script>");
      

  2.   

    要循环遍历吧  rp1.rows[i].findcontrol("txt1")  as TextBox
      

  3.   

    sendbtn这个按扭是repeater以外的,不是包含在里面的<asp:Repeater ID="rp1" runat="server" OnItemDataBound="rp1_ItemDataBound">
                <ItemTemplate>
                    <asp:Repeater ID="rp2" runat="server" OnItemDataBound="rp2_ItemDataBound">
                        <ItemTemplate>
                            <asp:TextBox ID="txt1" runat="server" Width="690px" Height="50px" TextMode="MultiLine"></asp:TextBox>
                            <asp:Repeater ID="rp3" runat="server">
                                <ItemTemplate>
                                    <asp:TextBox ID="txt2" runat="server" Width="690px" Height="50px" TextMode="MultiLine"></asp:TextBox>
                                </ItemTemplate>
                            </asp:Repeater>
                        </ItemTemplate>
                    </asp:Repeater>
                </ItemTemplate>
            </asp:Repeater>
    <asp:Button ID="sendbtn" runat="server" Text="提交" OnClick="sendbtn_Click" />
      

  4.   


    protected void rp1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataRowView drView = (DataRowView)e.Item.DataItem;
            string txt1Value =drView["txt1"].ToString();//得到ID为txt1输入框Text
        }
    }
    原理就是这样
      

  5.   


    Repeater rept3 = (Repeater)e.Item.FindControl("rp3");加上这句得到嵌套在rp1里的Repeater控件
      

  6.   


    貌似这是Repeater三重嵌套  。。
      

  7.   

      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                string au_id = ((DataRowView)e.Item.DataItem).Row["au_id"].ToString();
                Repeater repeaterSub = (Repeater)e.Item.FindControl("repeaterSub");
                }
            }多层嵌套同理。
      

  8.   

    ASP.NET的几个主要数据绑定控件都有FindControl();方法,遍历里面的控件