转发器内部有多个更新面板触发器

DGi*_*bbs 3 c# asp.net postback triggers updatepanel

我在转发器内部为项目创建触发器时遇到了一些麻烦.我想一个Linkbutton控件从更新面板中触发回发,我在标记中为Button控件定义了一个触发器,该工具正常工作:

<Triggers>
     <asp:PostBackTrigger ControlID="button" />
</Triggers>
Run Code Online (Sandbox Code Playgroud)

但是,LinkButton由于它们是动态创建的,我无法为s 执行此操作,只有解决方案是在我的repeater数据绑定事件中为每个按钮添加触发器,如下所示:

//Inside repeater itemdatabound...
var trigger = new PostBackTrigger();
trigger.ControlID = linkButton.UniqueID;
updatepanel.Triggers.Add(trigger);
Run Code Online (Sandbox Code Playgroud)

运行此代码时收到错误:

在UpdatePanel'updatepanel'中找不到ID为'ctl00 $ content $ repeater $ ctl01 $ linkBut​​ton'的控件.

如何为我的每个动态添加触发器LinkButtons

DGi*_*bbs 8

解决了这个问题.我假设它在我的OP中不起作用的原因是因为更新面板不能直接看到转发器控件.

我怀疑将它们移到转发器之外会解决它或调整FindControl("linkbutton")调用以深入控制转发器,使用此方法意味着我需要为每个级别创建两个链接按钮对象,这是不合需要的.

但是,我认为更清晰的解决方案是LinkButton使用scriptmanager 将控件注册为回发控件:

//Create triggers for each 'remove' button
ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
if (scriptManager != null)
{
     scriptManager .RegisterPostBackControl(linkbutton);
}
Run Code Online (Sandbox Code Playgroud)

在转发器OnItemDataBound事件中,解决了它.