繁体   English   中英

动态生成控件的事件处理

[英]Event handling for dynamically generated controls

我正在研究一个模块,基本上使用XSLT在页面上动态生成所有控件。 它们将被渲染并添加到标记中。 这里的问题是我想为此动态生成的控件编写事件处理,而且我不确定如何实现,因为在完美的开发环境中,我们通常双击aspx页面上的控件,.NET为您创建一个相关事件在aspx.cs页面的后面。

有任何想法吗?

动态添加的控件通常不能在回发后继续存在。

双击甚至用_selectedIndexChanged输入控件的预期名称都不会获得所需的结果。

这是在假设您正在添加HTML控件,而不是动态添加ASP.NET控件(请告诉我们我是对还是错)。

如果要执行客户端事件,则可以通过添加适当的属性来指定要触发的方法的名称(或代码本身)。

例如,如果要在用户单击动态生成的复选框时触发myCheckBox_OnClick ,则可以执行以下操作:

myDynamicallyGeneratedControl.Attributes.Add("onclick", "myCheckBox_OnClick");

您还可以生成要执行的javascript代码,然后通过页面的ClientScript.RegisterStartupScript方法将其添加到页面中。

您需要使用适当的处理程序创建一个方法,并在创建它们时将其连接到动态创建的控件。

protected void MyHandler(object sender, EventArgs e)
{
    //Do some stuff
}

当您创建控件时

LinkButton lb = new LinkButton();
    lb.ID = "lbexample";
    lb.Click += MyHandler;
Page.Form.Controls.Add(lb);

但是非常重要的是,在回发时,请按原样重建这些控件,否则事件将不会触发。 您需要首先重新创建控件,以便引发事件,因此,必须使用自己喜欢的任何状态机制在回发中提供创建控件所需的任何数据。

暂无
暂无

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

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