gpt4 book ai didi

c# - 在事件发生时从 Repeater 检索同级控件

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:17 25 4
gpt4 key购买 nike

我在转发器控件上有一个 DropDownList,还有一个按钮。

当我想启用该按钮时,该按钮将被禁用,直到在 DropDownList 上选择了一个有效项目。不幸的是,我似乎做不到。

通过以下方式找到中继器:(.As() 方法是 (object as T) 的扩展方法,只是使转换更容易)

sender.As<Control>().NamingContainer.Parent.As<Repeater>()

但是我取回的 Repeater 对我没有帮助,因为 FindControl(string name) 函数没有返回任何东西 - 并且在监 window 口中没有显示任何有用的东西。

那么,如何从转发器上另一个项目的事件(在本例中为 DropDown_SelectedIndexChanged)获取转发器上的兄弟控件(在本例中为 ImageButton)?

编辑

我终于成功了

sender.As<ImageButton>().NamingContainer.As<RepeaterItem>().FindControl("ControlName")

最佳答案

我想我已经找到了你问题的答案:

1.-我用下拉列表和按钮创建了一个中继器来做测试:

 <asp:Repeater ID="rp" runat="server">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>

</asp:DropDownList>
<asp:ImageButton ID="Button1" runat="server" Enabled="False" />
</ItemTemplate>
</asp:Repeater>

我对中继器进行了数据绑定(bind)。

2.-我创建方法 DropDownList1_SelectedIndexChanged:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList control = (DropDownList)sender;

RepeaterItem rpItem = control.NamingContainer as RepeaterItem;
if (rpItem != null)
{
ImageButton btn = ((ImageButton)rpItem.FindControl("Button1"));
btn.Enabled = true;

}

}

这样做的方法是询问控件,谁是它的父级,也就是说,RepeaterItem,或者你可以使用 NamingContainer(正如我最后写的那样),在那里你可以询问里面的任何控件.

关于c# - 在事件发生时从 Repeater 检索同级控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/322953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com