Asp.. NET服务器控件事件未触发
本文关键字:事件 NET 服务器控件 Asp | 更新日期: 2023-09-27 17:49:30
感谢大家的阅读。我有一个代码问题,已经在stackoverflow上讨论了很多次,但我不能使提供的解决方案工作。
这是关于服务器控件包含其他控件,我不能触发它们的事件。
我的问题很简单,我需要添加任何数字ok LinButton到我的服务器控件。这是我的代码:
protected override void CreateChildControls()
{
for (int i = 0; i < IndiceValue; i++)
{
LinkButton imageTemp = new LinkButton() { CommandName = String.Format("{1}_{0}", CommandNames, i), Text = i.ToString(), ID = Guid.NewGuid().ToString()};
imageTemp.Click += ImageTempOnClick;
this.Controls.Add(imageTemp);
}
base.CreateChildControls();
}
我的控件中有一个自定义事件:
public delegate void IndiceFiabiliteCommand(object sender, IndiceFiabiliteCommandEventArg e);
public event IndiceFiabiliteCommand Command;
理论上,当任何一个LinkButton被点击时,我想要警告用户任何一个LinkButton被点击了。我给了他所有需要的信息,但我不认为这部分是问题所在。
最后要知道的是,我实现INamingContainer
,我试图实现两者,IPostBackDataHandler
和IPostBackEventHandler,但它没有工作。
我希望你能理解
谢谢!
问题是ID = Guid.NewGuid().ToString()
不能使用动态id动态创建控件。将代码更改为
... i.ToString(), ID = i.ToString()
基本上,动态控件的ID必须与最初创建的ID相同。
否则,在每次回发时都创建新控件,并且它找不到引起回发的控件。
供参考:如果你需要捕获一个事件,我想建议使用CompositeControl,它已经有INamingContainer。
注意:这只是我根据你的代码发现的;