如何找到哪个控件触发中继器内的事件
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_CheckedChanged
和 ddl1_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;
}
如何查找触发了哪个控件事件,例如,如果转发器中有 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_CheckedChanged
和 ddl1_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;
}