1

ドロップダウン リスト (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 (ポストバック) は実行されません

4

1 に答える 1

0

すべてクライアント側で行うことを検討してください。例として、あなたはajax呼び出しを見ています。
以前に起こった別のイベントを見ることができますか?
好き:

  1. ローディングインジケーターを表示
  2. UIをブロックする
  3. Ajaxコール
  4. 読み込みインジケーターを非表示にします(Webメソッドからデータが返されます)
  5. UIのブロックを解除します。
于 2012-10-09T18:51:17.740 に答える