2014-01-29 139 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中。在我做完這件事後,一切都沒有問題。感謝所有的想法和幫助。