我创建了一个用户控件,其中包含一个LinkButtons表(以及其他信息)。我在另一个自定义对象中创建表行,并在这些表行的某些单元格中返回带有链接按钮的TableRowCollection。
在用户控件的代码中,我为这些LinkButtons的按钮单击创建了一个事件处理程序。我将用户控件传递给方法调用以创建表行(使用“this”),然后尝试将事件处理程序添加到LinkButton的“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);
其中“control”是作为参数传入的用户控件,“Link_Click”是事件处理程序。
提前致谢!
答案 0 :(得分:1)
首先,如果事件处理程序已经在用户控件中,则不需要将对它的引用传递给它自己的方法。您只需访问事件处理程序中的任何属性或方法即可。
事件依赖于控件ID连接到正确的控件。如果您不是每次在回发时都以完全相同的方式创建链接按钮,并确保它们具有与之前相同的ID,那么您的事件处理程序将不会触发,因为ASP.Net管道将无法启动找到它认为是控制树中正确的按钮。
此外,如果您在每次回发时将用户控件重新绑定到其数据源,这可能会导致某些控件的事件丢失,原因与上面详述的相同。
检查以确保每次都正确地重新创建控件,并且每次都不会重新绑定用户控件。