Asp.NET用户控制回发问题

时间:2014-01-29 02:17:12

标签: c# asp.net user-controls

我有一个aspx页面,它有一个Tab控件,几个按钮和一个用户控件。

<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>

用户控件上有2个自定义事件

public event EventHandler WorkerLoaded;
public event EventHandler WorkerUnloaded;

我在主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_Loaded事件在没有问题的情况下触发。我可以调试并观看按钮变为启用状态。我的问题是当屏幕加载时按钮仍然被禁用。在我的aspx页面中,我禁用了按钮:

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

enter image description here “下一步”按钮已被禁用。这就是你无法真正看到它的原因。我用黑色轮廓框了它。当我单击OK按钮时,工作负载事件将触发。

唯一的其他禁用是在On_Worker_Unloaded事件处理程序上。我还没有把它连接起来。没有其他因素导致按钮禁用。我缺少什么想法?

谢谢!

更新

用户控件中有一个UpdatePanel。我不知道这是否有所作为,但我想我会把它包括在内。我注意到发生了一些奇怪的事情。启用按钮后,我注意到如果我进行了回发,则会启用该按钮。这对任何人来说都没响了吗?

2 个答案:

答案 0 :(得分:0)

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

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

另外,是什么触发了WorkerLoaded事件?

答案 1 :(得分:0)

最后我发现了一个适合我的解决方案。我将Next按钮和Previous按钮放在他们自己的Update Panel中。在我这样做之后,一切都没有问题。感谢所有的想法和帮助。