Asp.NET服务器控件事件没有触发

时间:2014-03-11 21:11:37

标签: c# asp.net custom-server-controls

感谢所有阅读的人。我有一个代码问题,已在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;

理论上,当点击任何LinkBut​​ton时,我希望用户警告任何LinkBut​​ton都被点击了。我给他所有需要的信息,但我不认为这部分是问题。

最后要知道的是,我实现了INamingContainer,并尝试实现IPostBackDataHandler和IPostBackEventHandler,但它没有用。

我希望它可以理解

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

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

否则,每次回发都会创建新的控件,并且找不到导致回发的控件。

仅供参考:如果您需要捕获某个活动,我建议您使用已经拥有INamingContainer的 CompositeControl

注意:这正是我根据您的代码找到的内容;它也可能是其他问题。