【问题标题】:How to find which control triggers the event inside a repeater如何找到哪个控件触发了转发器内的事件
【发布时间】:2017-10-11 10:33:46
【问题描述】:

如何查找触发了哪个控件事件,例如,如果第二个复选框或第三个下拉列表导致事件,中继器中有 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

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

【问题讨论】:

    标签: c# asp.net events controls repeater


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多