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,但它没有工作。

我希望你能理解

谢谢!

Asp.. NET服务器控件事件未触发

问题是ID = Guid.NewGuid().ToString()

不能使用动态id动态创建控件。将代码更改为

... i.ToString(), ID = i.ToString()

基本上,动态控件的ID必须与最初创建的ID相同。

否则,在每次回发时都创建新控件,并且它找不到引起回发的控件。

供参考:如果你需要捕获一个事件,我想建议使用CompositeControl,它已经有INamingContainer。

注意:这只是我根据你的代码发现的;