ドロップダウン リスト (asp:Dropdownlist) からアイテムが選択されたときに、blockUI を使用してページをブロックしたいと考えています。項目が選択されると (onchange イベント)、UI は「ブロック」されますが、ブロックされたままになります。ポストバック イベントが発生していないようです。サーバーにポストバックし、必要なものを処理し、戻ってきてページのブロックを解除するボタンをクリックすると、UI をブロックおよびブロック解除できます。ドロップダウンリストから同じことをさせることができません。助言がありますか?
<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_Load(...) {
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 (ポストバック) は実行されません