C# Asp.NET用户控件回发问题

C# Asp.NET用户控件回发问题,c#,asp.net,user-controls,C#,Asp.net,User Controls,我有一个aspx页面,上面有一个选项卡控件、几个按钮和一个用户控件 <dx:TabPage Text="Worker Information" Name="tabWorker"> <ContentCollection> <dx:ContentControl runat="server" SupportsDisabledAttribute="True">

我有一个aspx页面,上面有一个选项卡控件、几个按钮和一个用户控件

<dx:TabPage Text="Worker Information" Name="tabWorker">
    <ContentCollection>
        <dx:ContentControl runat="server" SupportsDisabledAttribute="True">
            <uc:WorkerInfo runat="server" OnWorkerLoaded="On_Worker_Loaded" OnWorkerUnloaded="On_Worker_Unloaded" />
        </dx:ContentControl>
    </ContentCollection>
</dx:TabPage>
我在主aspx页面中有事件处理程序

protected void On_Worker_Loaded(object sender, EventArgs e)
{
    btnNext.Enabled = true;
}

protected void On_Worker_Unloaded(object sender, EventArgs e)
{
    btnNext.Enabled = false;
}
On_Worker_加载的事件在没有问题的情况下激发。我可以调试并观看按钮启用。我的问题是当屏幕加载时,按钮仍处于禁用状态。在我的aspx页面中,我禁用了按钮:

<dx:ASPxButton ID="btnNext" runat="server" Text="Next" Theme="MetropolisBlue" 
                onclick="btnNext_Click" Enabled="false"></dx:ASPxButton>

“下一步”按钮已被禁用。这就是为什么你不能真正看到它。我用黑色的轮廓把它框起来了。当我单击OK按钮时,WorkerLoaded事件触发

唯一的另一个禁用是on_Worker_unload事件处理程序。我还没有把它连接起来。没有任何其他原因导致按钮禁用。你知道我错过了什么吗

谢谢

更新


用户控件中有一个UpdatePanel。我不知道这是否有区别,但我想我会包括在内。我注意到还发生了一些奇怪的事情。启用按钮后,我注意到如果我回发,按钮将被启用。这对任何人都有影响吗?

似乎在设置Enabled=false属性之前调用了加载的事件

在调试器中,检查调用事件时Enabled属性是否已为false


还有,是什么触发了WorkerLoaded事件?

最后我找到了一个适合我的解决方案。我将“下一步”按钮和“上一步”按钮放在它们自己的更新面板中。我做了这件事之后,一切都顺利进行。感谢所有的想法和帮助。

在完成任何其他操作之前,将加载aspx页面。页面加载时,该按钮已被禁用。当我单击用户控件上的“确定”按钮时,将触发WorkerLoaded事件。然后,事件应启用“下一步”按钮。我将编辑我的帖子并添加一个屏幕截图。我没有看到任何明显的东西。也许页面生命周期中发生了一些意想不到的事情。为了进行调试,我将尝试更改事件处理程序中的一些其他值,并查看这些其他更改在客户端上是否可见。我试着改变那个按钮上的文字,但没用。我确实注意到,如果在WorkerLoaded事件触发后单击该按钮,文本将随之更改,btnNext将被启用。这和用户控件上的按钮位于UpdatePanel内这一事实是否是巧合?更新面板是否与问题有关?是的,我相信更新面板只能更新更新面板内的服务器控件。由于按钮位于“更新”面板之外,因此在执行完整回发之前,不会对其进行更改。
<dx:ASPxButton ID="btnNext" runat="server" Text="Next" Theme="MetropolisBlue" 
                onclick="btnNext_Click" Enabled="false"></dx:ASPxButton>