2016-11-21 64 views
0

我想禁用我的網頁上的一些控制,而頁是基於更改爲DropDownList控制頁面仍在加載甚至

當用戶更改DropDownList的,我裝車有代碼在那裏暫時禁用控制。

myDDL.enabled =false; 

我也有我的Page_Load()調用創建LoadComplete事件。

Page.LoadComplete += new EventHandler(Page_LoadComplete); 

LoadComplete()我只是重新啓用DropDownList控制

myDDL.enabled=true; 

然而,真正的情況是,我的控制有效「非常迅速」,用戶仍然可以改變的價值即使頁面仍然「加載」,dropdownlist,也是如此。

「加載」是什麼意思?

我有一個gridview與文本框在幾個行,我可以看到gridview已加載,但控制仍使其停止前,由於什麼都,在內部做(JavaScript)的加載。

有沒有一種方法可以延遲LoadComplete()事件說5秒,以允許CKeditor中的JavaScript完成?

感謝

回答

0

我簡單地使用JavaScript和...

window.onload = function() { 
    setTimeout(function() { 
     var ddl = document.getElementById('<%=myDDL.ClientID%>'); 
     if (ddl) ddl.removeAttribute('disabled'); 
    }, 4500) 
} 

這從延遲重新啓用4.5秒並且在下拉列表控制解決delima,畢竟JavaScript和其他控件已經加載。

我知道onLoad()會在DOM加載完成後立即運行,但延遲後,只有在需要時才能重新啓用該控件。

很好用!

1

,如果你想要的是一個5段的延遲,你可以這樣做:

功能loadComplete(){

setTimeout(function(){ myDDL.enable = true;}, 5000); 

}

這將導致DDL在調用loadComplete 5秒後啓用。

所以我實際上做的是服務器:

private void load_page(){ 
    myDD.enable = false; 
} 

然後在客戶端上,使用jQuery:

<script> 
    $(document).ready(function() { $("#myDDL").prop('disabled', false); }); 

</script> 

沒有jQuery的,你可以使用onload事件處理程序的窗體部分。

這個解決方案是嚴格的客戶端,但假設一個aspx頁面。 onload事件處理程序在標籤中分配。

<html> 
<head> 
    <script> 
     function init() { 
      document.getElementById("someDDL").disabled = false; 

     } 

    </script> 
</head> 
<body> 
    <form onload="init()"> 
     <asp:DropDownList id="someDDL" clientIdMode="Static" runat="server" Enabled="false"></asp:DropDownList> 
    </form> 
</body> 
</html> 
+0

但這就是javascript。你有C#解決方案嗎? – Fandango68

+1

沒有一個。你想要ddl被禁用,直到頁面被加載。你需要在客戶端(因此JavaScript)而不是服務器上做到這一點。 – Bindrid

+0

謝謝。好的,我已經這樣做了,但ddl在開始時總是假的!我希望它被啓用,所以用戶可以選擇一些東西,但是當他們選擇了一個值時,禁用它。然後觸發change事件,加載gridview,CKeditors等等,然後在所有OBJECTS加載到頁面(包括CKeditor等)後再次啓用ddl。 – Fandango68

相關問題