Developer
Developer

Reputation: 231

How to find which control triggers the event inside a repeater

How to find which control event got triggered, for example, if there are 5 columns in the repeater if the 2nd checkbox or 3rd drop-down list causes the event. How to find which control event got triggered, so that the particular control related logic alone will be executed without disturbing other column controls.

The sample repeater code is attached as follows,

<asp:Repeater ID="rptTest" runat="server">
    <ItemTemplate>
        <td class="repeater-col">
            <div>
                <asp:TextBox ID="txt1" runat="server"></asp:TextBox>
            </div>
            <div>
                <asp:DropDownList ID="ddl1" runat="server" OnSelectedIndexChanged="ddl1_SelectedIndexChanged" AutoPostBack="true">
                </asp:DropDownList>
            </div>
            <div>
                <asp:CheckBox ID="chk1" runat="server" OnCheckedChanged="chk1_CheckedChanged" AutoPostBack="true" />
            </div>
        </td>
    </ItemTemplate>
</asp:Repeater>

There are lot more dependent controls presented inside the repeater. Based on the selection of the controls the data to the other controls are bound and processed. The logic bounded to the repeater will be handled on the respective events for example on chk1_CheckedChanged and ddl1_SelectedIndexChanged

Kindly help on this! Thanks in advance!

Upvotes: 0

Views: 498

Answers (1)

VDWWD
VDWWD

Reputation: 35514

You can cast the sender back to the correct Control type. Then you can access it's properties. If you want to know which items the control was in, you can use the NamingContainer

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList drp = sender as DropDownList;
    drp.BackColor = Color.Green;

    RepeaterItem item = drp.NamingContainer as RepeaterItem;
    int itemIndex = item.ItemIndex;
}

Upvotes: 2

Related Questions