C# ASP.NET页面生命周期中的自定义服务器控件和事件问题

C# ASP.NET页面生命周期中的自定义服务器控件和事件问题,c#,events,custom-controls,C#,Events,Custom Controls,我开始对这个发疯了,它“似乎”我不能让它以一种优雅的方式工作,我相信我应该能够 在页面的右侧,我动态创建自定义服务器控件,这些控件中有触发的事件,我已经在测试中证明了这一点是有效的 我在页面的左侧有一个树状视图,它在页面加载时自动填充,假设它不是回发,如果它是回发,那么它的viewstate可以很好地处理这个问题。当您单击树的一个分支时,它将发回,当事件触发时,它将用新的自定义服务器控件填充右侧,这些控件保存与您单击的分支相关的信息。右面板总是填充正确的控件,但是当单击事件时不会触发事件,因为新

我开始对这个发疯了,它“似乎”我不能让它以一种优雅的方式工作,我相信我应该能够

在页面的右侧,我动态创建自定义服务器控件,这些控件中有触发的事件,我已经在测试中证明了这一点是有效的

我在页面的左侧有一个树状视图,它在页面加载时自动填充,假设它不是回发,如果它是回发,那么它的viewstate可以很好地处理这个问题。当您单击树的一个分支时,它将发回,当事件触发时,它将用新的自定义服务器控件填充右侧,这些控件保存与您单击的分支相关的信息。右面板总是填充正确的控件,但是当单击事件时不会触发事件,因为新的分支Id只有在page_load事件(当treeview事件触发时)之后才知道,我认为这对于所有事件聪明度来说都太晚了

我已经研究过如何使用Response.Redirect,但后来我在Treeview上丢失了viewstate,因此我开始考虑强制返回Javascript帖子,但还没有做太多

我真的不敢相信这是一个不寻常的问题,所以希望有一个优雅的解决方案。如果这只是我完全错误的方式,那么如果我们能让它工作,很高兴改变所有的逻辑

非常感谢

马特

*更新**

我还不允许关闭它,所以将粘贴到下面

似乎输入这些信息让我想到了Javascript的路径以及.NET在何处必须具备的功能。读了一点书,我想到了这个


PostBackOptions pbo=新的PostBackOptions(pnlEvents);pbo.ActionUrl=Request.Url.AbsoluteUri;pbo.PerformValidation=假;字符串postback=ClientScript.GetPostBackEventReference(pbo);RegisterStartupScript(typeof(Page),“AutoPostBackScript”,postback,true);


如果在从中获取信息的事件触发后运行此操作,则会导致另一次回发,允许您加载服务器控件forn Init或load,只要您将值存储在viewstate或其另一个控件viewstate中。

事件可以在Page_Init或Page_load中注册。如果您仍然迷路,请检查

更新:
您只需在URL中发送参数,然后在页面加载中获取它,根本不需要使用回发机制。

@Tomas谢谢,我在旅行中已经通读过了。我遇到的问题是,我不知道要加载什么信息,直到OnSelected Treeview事件在init或load之后触发。这就像我需要在分配了新的分支Id之后以某种方式强制进行另一次回发,这样我就可以从INIT而不是从事件触发点加载新控件。