查找动态添加到页面的控件[英] Find a control dynamically added to a page

本文是小编为大家收集整理的关于查找动态添加到页面的控件的处理方法,想解了查找动态添加到页面的控件的问题怎么解决?查找动态添加到页面的控件问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

在内容页面中,我添加了一些链接按钮.链接按钮的数量取决于页面中的数据.数据不在网格或任何其他数据控件中.
我需要访问用户单击的链接按钮.
我使用了以下代码,

int PageNumber = Convert.ToInt16(e.CommandArgument.ToString());字符串 str = e.CommandName;LinkBut​​ton lbl = (LinkBut​​ton)FindControl(str);lbl.ForeColor = System.Drawing.Color.LightGreen;lbl.Font.Bold = true;

CommandName 和 id 也是一样的.
正确接收 CommandName 但找不到控件.

请提出解决方案
解决方案
你在哪里添加控件?占位符?我在下面给出了你如何做到这一点的粗略想法:

添加一个带有标签的占位符:

<form id="form1" runat="服务器"><div><asp:PlaceHolder ID="plcMain" runat="服务器"></asp:PlaceHolder><asp:Label runat="server" ID="lblInfo"></asp:标签></div></form>

代码 - 背后:

受保护 void Page_Load(对象 发送者,EventArgs e){添加链接();}private void AddLinks(){for (int i=0;i<10;i++){var linkBut​​ton = new LinkBut​​ton{ID = "lnkBtn" + i.ToString(),CommandArgument = i.ToString(),文本 = "链接" + i.ToString()};linkBut​​ton.Click += new EventHandler(linkBut​​ton_Click);plcMain.Controls.Add(linkBut​​ton);}}protected void linkBut​​ton_Click(object 发送者,EventArgse){var btn = sender as LinkBut​​ton;lblInfo.Text = "链接的命令参数 = " + btn.CommandArgument;}


如果您注意到,您甚至不需要 FindControl 方法,只需要 linkButton_Click 事件处理程序.如果你坚持使用 FindControl 方法,你可以做类似

LinkBut​​ton control = plcMain.FindControl("lnkBtn1") as LinkBut​​ton;//查找"链接1"//用"控制"做一些事情


在您的情况下,您使用页面上的 FindControl 方法.如果您不想使用某个控件开始搜索,请尝试递归 FindControl http://weblogs.asp.net/palermo4/archive/2007/04/13/recursive-findcontrol-t.aspx[^]

控制.FindControl[^] 应该为您解决问题.动态控件应该无关紧要.

ContentPlaceHolder contentPage = Master.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
            LinkButton lnkBtn = contentPage.FindControl("LinkButtonId") as LinkButton;
     if (lnkBtn!= null)  
     {  
     		//Do some action
     }


这工作正常

本文地址:https://www.itbaoku.cn/post/1355836.html