2012-10-08 107 views
1

我想從下拉列表(asp:Dropdownlist)中選擇一個項目時使用blockUI來阻止頁面。當一個項目被選中(onchange事件)時,界面確實會被「屏蔽」,但是保持被阻止。似乎回發事件沒有被解僱。當我點擊回發到服務器的按鈕時,我可以阻止和解除阻止用戶界面,處理需要的內容並返回並取消阻止頁面。我無法從下拉列表中做到這一點。有什麼建議麼?JQuery BlockUI下拉列表

<script type="text/javascript"> 
    var URL; 

    function showWaitPanel(msg) { 
     $.blockUI({ 
      message: '<p>' + msg + '</p>' 
      ,css: { 
       border: 'none', 
       padding: '15px', 
       backgroundColor: '#000', 
       '-webkit-border-radius': '10px', 
       '-moz-border-radius': '10px', 
       opacity: .5, 
       color: '#fff' } 
     }); 
    } 

    function removeWaitPanel(msg, url) { 
     $.unblockUI(); 

     if (msg != '') { 
      $.blockUI({ message: '' + msg + '' }); 
      setTimeout($.unblockUI, 20000); 
     } 

     if (url != '') 
      window.location.href = url; 
    } 

</script> 

  <asp:DropDownList ID="ddlVendors" runat="server" AppendDataBoundItems="true" AutoPostBack="true" OnSelectedIndexChanged="ddlVendors_SelectedIndexChanged" > 

....

在服務器端,代碼隱藏,... Page_Loa d(...) {

 if (!Page.IsPostBack) 
     { 
      ddlVendors.Attributes.Add("onchange", "return showWaitPanel('Please Wait...');"); 
    } 

}

protected void ddlVendors_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ..... 
     RemoveWaitPanel("ddlVendors_SelectedIndexChanged", "", ""); 
    } 

    private void RemoveWaitPanel(string key, string message, string url) 
    { 
     string strScript = "return removeWaitPanel('" + message + "', '" + url + "');"; 

     ScriptManager.RegisterClientScriptBlock(this, GetType(), key, strScript, true); 

    } 

showWaitPanel()在客戶端沒有得到執行當選擇一個項目,UI被阻斷但隨後服務器側ddlVendors_SelectedIndexChanged(回發)沒有按沒有得到執行

+1

第一個建議是*分享您的代碼* .. –

+0

@MichalKlouda ..米哈爾更新原代碼與代碼..謝謝。 – user1634332

回答

0

考慮做所有的客戶端。作爲一個例子,你正在看ajax調用。
你能看看之前發生的另一個事件嗎?
像:

  1. 顯示負載指示
  2. 座UI
  3. Ajax調用
  4. 隱藏負荷指示符(我們有數據從我們的方法後)
  5. 阻止UI。