我正在开发一个模块,我基本上使用XSLT动态生成页面上的所有控件。它们正在被渲染并添加到右侧标记中。这里的问题是我想为这个动态生成的控件编写事件处理,我不知道如何实现,因为在完美的开发环境中,我们通常双击aspx页面上的控件,.NET为你创建一个相关的事件在aspx.cs页面的后面。
有什么想法吗?
答案 0 :(得分:1)
动态添加的控件通常无法在回发后继续存在。
无需双击,甚至用_selectedIndexChanged键入控件的预期名称,都可以获得您想要的效果。
这是ASSUMING(请告诉我们,如果我是对或错的话)您要添加HTML控件,而不是动态添加ASP.NET控件。
答案 1 :(得分:0)
如果要执行客户端事件,可以通过添加适当的属性来指定要触发的方法的名称(或代码本身)。
例如,如果您想在用户点击动态生成的复选框时触发myCheckBox_OnClick
,则可以执行以下操作:
myDynamicallyGeneratedControl.Attributes.Add("onclick", "myCheckBox_OnClick");
您还可以生成要执行的javascript代码,并通过页面的ClientScript.RegisterStartupScript
方法将其添加到页面中。
答案 2 :(得分:0)
您需要使用适当的处理程序创建一个方法,并在创建它时将其连接到动态创建的控件。
即
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);
但是在你的回发中,重建这些控件或者事件不会触发是非常重要的。您需要首先重新创建控件,以便可以引发事件,因此您需要创建控件所需的任何数据都必须使用您熟悉的任何状态机制在帖子后面提供。