感谢所有阅读的人。我有一个代码问题,已在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,但它没有用。
我希望它可以理解
谢谢!
答案 0 :(得分:0)
问题是ID = Guid.NewGuid().ToString()
您不能使用动态ID动态创建控件。将代码更改为
... i.ToString(), ID = i.ToString()
基本上,动态控件的ID必须与最初创建的ID相同。
否则,每次回发都会创建新的控件,并且找不到导致回发的控件。
仅供参考:如果您需要捕获某个活动,我建议您使用已经拥有INamingContainer的 CompositeControl 。
注意:这正是我根据您的代码找到的内容;它也可能是其他问题。