2012-10-08 73 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。