如何找到动态创建按钮的容器 ASP.net

Posted

技术标签:

【中文标题】如何找到动态创建按钮的容器 ASP.net【英文标题】:How to find container of dynamically created button ASP.net 【发布时间】:2020-12-06 12:40:13 【问题描述】:

我有一个 WebForm,它的控件是动态创建的,因为它们的数量可以变化。每个元素都是一个 Panel,其中包含一个 TextBox、一个 DropDownList 和一个 Button。 每个控件都有一个唯一的 ID,所有的按钮都有相同的 clickEvent。在 clickEvent 的代码中,我想获取 presedButton 所属的面板的 ID,以便我可以从该面板的 DropDownList 和 TextBox 中访问所选值。 我该怎么做?

【问题讨论】:

【参考方案1】:
private void button1_Click(object sender, EventArgs e)
    
        var panelId = ((Button)sender).Parent.ID;

    

或者你可以直接获取控件

private void button1_Click(object sender, EventArgs e)
    

        var myTextbox = ((Button)sender).Parent.Controls.OfType<TextBox>().FirstOrDefault();
        var myDropDownlist = ((Button)sender.Parent.Controls.OfType<DropDownList>().FirstOrDefault();

    

或通过控件 ID:

private void button1_Click(object sender, EventArgs e)
    

        var myTextbox = ((Button)sender).Parent.Controls.OfType<TextBox>().Where(x => x.ID == "textboxID").SingleOrDefault();
        var myDropDownlist = ((Button)sender).Parent.Controls.OfType<DropDownList>().Where(x => x.ID == "dropdownlistID").SingleOrDefault();

    

【讨论】:

以上是关于如何找到动态创建按钮的容器 ASP.net的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net MVC 5 动态创建按钮并调用带有参数的 javascript 函数

如何在动态按钮上创建动态按钮单击事件?

从动态创建的文本字段回发一个值 [ASP.net]

使用 ajax 动态创建 TABCONTAINER ASP.NET

如何使用jQuery unobtrusive和Asp.Net Mvc验证动态生成的单选按钮组?

ASP.NET MVC 如何从嵌套对象的视图模型集合中动态创建表结构