Javascript 为什么_doPostBack()没有触发我的绑定加载事件?

Javascript 为什么_doPostBack()没有触发我的绑定加载事件?,javascript,asp.net,vb.net,updatepanel,postback,Javascript,Asp.net,Vb.net,Updatepanel,Postback,情况是这样的:我的页面上动态创建的更新面板数量可变,所以我想我应该编写一个方法来处理每个面板的所有加载 我的Updatepanel创建看起来像这样: Dim newUpdp As New UpdatePanel newUpdatep.ChildrenAsTriggers = False newUpdatep.UpdateMode = UpdatePanelUpdateMode.Conditional newUpdatep.ID = Guid.NewGuid.ToString AddH

情况是这样的:我的页面上动态创建的更新面板数量可变,所以我想我应该编写一个方法来处理每个面板的所有加载

我的
Updatepanel
创建看起来像这样:

 Dim newUpdp As New UpdatePanel
 newUpdatep.ChildrenAsTriggers = False
 newUpdatep.UpdateMode = UpdatePanelUpdateMode.Conditional
 newUpdatep.ID = Guid.NewGuid.ToString

 AddHandler newUpdatep.Load, AddressOf updatep_load_method
 updatep_Holder.ContentTemplateContainer.Controls.Add(newUpdp)
 updatep_Holder.Update()  
这将创建更新面板并将其加载事件绑定到方法“updatep_load_method”。只要将
Updatepanel
插入保持架,就会调用此方法。方法代码如下所示:

Private Sub updp_load_method(sender As UpdatePanel, e As System.EventArgs)
   Dim div As New HtmlGenericControl("div")
   div.InnerText = Date.Time.Now.ToString
   sender.ContentTemplateContainer.Controls.Add(div)
   sender.Update()
End Sub
稍后我想更新面板,并刷新时间。因此,我使用javascript uu doPostBack方法。根据,doPostBack方法遵循完整的页面回发生命周期,因此我认为我的更新面板的加载事件将被触发,并且特定的更新面板将调用“updatep_load_方法”


虽然发生了部分回发,并且调用了其他更新面板的加载事件,但绑定的事件没有。那么这里发生了什么?

尝试在代码中实现RaisePostBackEvent方法:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument);

   //add whatever code you need to execute on postback here
}

您需要在
Page_Init
期间重新创建动态控件,并且必须使用相同的
Id
(因此在重新创建控件时无法执行
Guid.NewGuid.ToString()

否则,ASP.Net将无法找到您的控件并用
ViewState
中的数据填充它


这里有一个很好的例子解释了有关动态控件的更多信息。

您是否在回帖中再次添加更新面板?@Tejs,我想知道是否会发生这种情况-就像我可能正在重新创建控件,但没有再次绑定它们或类似的事情。明天我将尝试詹姆斯·约翰逊的答案,看看我的进展如何。谢谢@Mrchief,我一定会尝试一下。您对检索更新面板的ID有何建议,以便我可以使用相同的ID重新创建?或者你会建议首先不要使用guid吗?我使用它们的唯一原因是为每个动态创建的面板获得唯一的ID。您需要以某种方式跟踪ID。我建议你将它建立在一些已知属性的基础上,你可以在重新创建时使用这些属性。如果不深入了解代码,就很难判断。如果可能的话,避免使用动态控件,如果可能的话,避免使用UpdatePanel!我接受了您关于不使用动态面板的建议-我发现只需使用一些控件预先填充页面(因此我事先知道ID),然后按照您的建议在page_init期间重新绑定onload就更容易了。