2014-01-29 44 views
1

我有了一个标签控制,几个按钮就可以了用户控件的aspx页面。Asp.NET用户控件回发问题

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

有用户控件

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事件触发的事件处理程序没有问题,2个自定义事件。我可以调试并观看启用的按钮。我的问题是当屏幕加载按钮仍然被禁用。在我的aspx页面我禁用按钮:

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

enter image description here “下一步”按钮已经被禁用。这就是为什么你不能真正看到它。我用黑色轮廓框住了它。当我点击OK按钮时,WorkerLoaded事件触发。

唯一的其他禁用是对On_Worker_Unloaded事件处理程序。我没有把它连接起来。没有其他的东西会导致按钮被禁用。任何想法我失踪了?

谢谢!

UPDATE

用户控件具有的UpdatePanel在它。我不知道这是否有所作为,但我想我会包括这一点。我注意到了一些其他奇怪的事情。启用按钮后,我注意到,如果我做了回发,该按钮将被启用。这是否为任何人敲响了任何钟声?

回答

0

似乎设置启用= False属性之前被调用加载的事件。

在调试器检查,以查看Enabled属性是否已经假时被称为事件。

此外,什么触发了WorkerLoaded事件?

+0

在完成其他任何事情之前加载aspx页面。加载页面时该按钮已被禁用。当我点击用户控件上的'确定'按钮时,触发WorkerLoaded事件。该事件然后应该启用下一步按钮。我将编辑我的帖子并添加一个屏幕截图。 –

+0

我没有看到任何明显的。也许在页面生命周期中出现意想不到的事情。为了调试,我会尝试更改事件处理程序中的其他一些值,并查看这些其他更改是否在客户端上可见。 –

+0

我添加了另一个按钮并将其启用。我试图改变该按钮上的文字,但没有奏效。我注意到,如果在WorkerLoaded事件触发后点击按钮,文本将会改变,并且btnNext将被启用。这和用户控件上的按钮是否在UpdatePanel内是巧合?更新面板可以解决问题吗? –

0

最后,我发现我工作的解决方案。我把Next按钮和Previous按钮放在它们自己的Update Panel中。在我做完这件事后,一切都没有问题。感谢所有的想法和帮助。