Handling the checkedchanged event of inner repeater Checkbox control in asp.net nested repeaters

asp.netcheckboxnestedrepeater

I have nested repeaters on my aspx page.In the outer repeater I am displaying a list of products and in the inner repeater I am displaying a list of additional options associated with each product.The inner repeater contains a checkbox,textbox,label and other stuff.I would like to find the controls inside the outer repeater when a user selects a checkbox in the inner repeater.In order to handle this I am using the following code.

<asp:Repeater ID="OuterRepeater" runat="server" 
        onitemdatabound="OuterRepeater_ItemDataBound" >
        <ItemTemplate>
    <asp:Label ID="CodeLabel" runat="server" Text='<%# Eval("Code") %>'></asp:Label>
     <asp:Repeater ID="InnerRepeater" runat="server" OnItemCreated="InnerRepeater_ItemCreated">
       <ItemTemplate>
    <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true"/> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      ......
      .......
    </ItemTemplate>
    </asp:Repeater>
     ......
      ......
    </ItemTemplate>
    </asp:Repeater>


 protected void InnerRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
        {
            RepeaterItem ri = (RepeaterItem)e.Item;

            if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem
            )
            {
                CheckBox cb = ri.FindControl("CheckBox1") as CheckBox;
                cb.CheckedChanged += new EventHandler(CheckBox1_CheckedChanged);
            }
        }

private void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {          

            CheckBox cb = (CheckBox)sender;
            if (cb.Checked)
            {
                //do something
            }
            else
            {
              //do something
            }
        }

But the checkedChanged event of the checkbox is not firing for some reason.Also I am not sure how to access the textbox of the outer repeater in the checked changed event of the innter repeater checkbox control.

Could someone please help me with this?

Thanks

Best Answer

It does not fire the CheckedChanged event, since you have declared the event handler as private, You have to make it Protected or Public

Protected void CheckBox1_CheckedChanged(object sender, EventArgs e)

You can access the Textbox control like..

private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{ 
  CheckBox checkBox = (CheckBox)sender;
  Textbox textbox1 = (TextBox)checkBox.Parent.FindControl("TextBox1");
  String textboxText = textbox1.Text;
}
Related Topic