Search code examples
asp.netvb.netrepeater

how to create event dropdownlist in repeater ( selected changed event)


I want to handle dropdownlist event (selectedindexchanged) for reach item in repeater.

I have each row in repeater: (textbox, textbox, dropdownlist)

Based on dropdownlist value, I want to hide and show the two other textboxes

How can I do it?


Solution

  •  <asp:Repeater runat="server" ID="rep" >
            <ItemTemplate>
              <asp:DropDownList ID="drp" runat ="server" OnSelectedIndexChanged="drp_SelectedIndexChanged" AutoPostBack="true">
                    <asp:ListItem Text ="aa"></asp:ListItem>
                    <asp:ListItem Text="bb"></asp:ListItem>
                </asp:DropDownList>
                <asp:TextBox ID="txtA" runat="server"></asp:TextBox>
            </ItemTemplate>
           </asp:Repeater>
    

    And in codebehind:

    VB.NET :

    Protected  Sub drp_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
    Dim drp As DropDownList = CType(sender, DropDownList)
    Dim itm As RepeaterItem = CType(drp.Parent, RepeaterItem)
    
    Dim txtA As TextBox = CType(itm.FindControl("txtA"), TextBox)
     If txtA <> Nothing And drp.SelectedValue ="aa" Then
          'txtA.Text = "AAA";
        txtA.Visible = False
     End If  End Sub
    

    OR C#:

     protected void drp_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList drp = (DropDownList)sender;
        RepeaterItem itm = (RepeaterItem)drp.Parent;
    
        TextBox txtA = (TextBox)itm.FindControl("txtA");
         if (txtA != null && drp.SelectedValue =="aa")
        {
              //txtA.Text = "AAA";
            txtA.Visible = false;
        }
    
    }