如何找到哪个控件触发中继器内的事件

How to find which control triggers the event inside a repeater

如何查找触发了哪个控件事件,例如,如果转发器中有 5 列,如果第二个复选框或第三个下拉列表导致事件。如何找到触发了哪个控件事件,以便在不干扰其他列控件的情况下单独执行与特定控件相关的逻辑。

附上转发器示例代码如下,

<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>

中继器内有更多依赖控件。根据控件的选择,绑定和处理其他控件的数据。绑定到转发器的逻辑将在相应的事件上处理,例如 chk1_CheckedChangedddl1_SelectedIndexChanged

请帮忙解决这个问题!提前致谢!

您可以将发送者转换回正确的控件类型。然后你可以访问它的属性。如果您想知道控件在哪些项目中,可以使用 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;
}