繁体   English   中英

从自定义对象向用户控件添加事件处理程序

[英]Add Event Handler to User Control from custom object

我创建了一个用户控件,其中将包含LinkBut​​tons表(和其他信息)。 我在另一个自定义对象中创建表行,并在这些表行的某些单元格中返回带有链接按钮的TableRowCollection。

在用于用户控件的代码中,我为这些LinkBut​​ton的按钮单击创建了一个事件处理程序。 我将用户控件传递给方法调用以创建表行(使用“ this”),然后尝试将事件处理程序添加到LinkBut​​ton的“ Click”中。 由于某种原因,事件处理程序不会在由该按钮引起的回发中触发。 关于如何使此事件触发的任何想法?

这是我创建按钮并添加事件处理程序的代码:

LinkButton button = new LinkButton();
button.Text = movie.Title;
button.Click += new EventHandler(control.Link_Click);
button.CommandArgument = result.LocalID.ToString();
cell1.Controls.Add(button);

其中“控件”是作为参数传入的用户控件,而“ Link_Click”是事件处理程序。

提前致谢!

首先,如果事件处理程序已经在用户控件内,则无需将对其的引用传递到其自己的方法中。 您可以简单地访问事件处理程序中的任何属性或方法。

事件依赖于控件ID连接到正确的控件。 如果您不是在每次回发时都以完全相同的方式创建链接按钮,并确保它们具有与以前相同的ID,那么您的事件处理程序将不会触发,因为ASP.Net管道将无法执行在控制树中找到它认为正确的按钮。

此外,如果您在每次回发时都将用户控件重新绑定到其数据源,则可能导致丢失某些控件的事件,原因与上文所述相同。

检查以确保每次都正确地重新创建控件,并且没有每次都重新绑定用户控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM