0

ModalPopupExtender とアニメーション gif を使用して、一種の「処理中...」ウィンドウを作成しようとしています。

これが表示されているページは、リクエストの処理に時間がかかる可能性があります...現時点で速度を上げる方法はありません。最終的には、バックグラウンドで DB で実行され、完了したらメールで送信するジョブに切り替えることができました..しかし、今のところ、ポップアップ モーダル処理ウィンドウを表示するだけで済みます。

modalpopup が機能し、接続したパネルが表示されます...問題は、ボタンのポストバックが起動しないことです。これは AJAX 呼び出しではなく、完全なポストバックです。JavaScript を使用してパネルを有効にすることで、他のページでも同様のことを行いましたが、このページではモーダル パネルを使用して、コントロールを台無しにしないようにしたいと考えています。

これは可能ですか?

これが私のコードです:

サーバー側のボタン ハンドラー:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'do stuff here
Dim str As String = ""
End Sub

クライアント側:

...
<asp:Button ID="Button1" runat="server" Text="Button" />
...
<asp:Panel ID="pnlProgress" runat="server" style="display:none">
<div class="borderPanel">Hello!!</div>
</asp:Panel>
<asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="Button1" PopupControlID="pnlProgress" backgroundcssclass="ModalPopupBG" BehaviorID="modalpopup" >
</asp:ModalPopupExtender>
...

そのため、Button1 をクリックするとモーダルが表示されますが、ポストバックがサーバー側のメソッドにヒットすることはありません。何か案は?(ところで、これは単なるテストであるため、コントロールは一般的に名付けられています。)

ありがとう、ジョージ


これが私の新しいコードです... HEADのJSコード:

function ShowPopup() {
  $find('modalpopup').show();
  return true;
}

ボタン、パネル MPE コード:

<asp:Button ID="Button1" runat="server" Text="login" OnClientClick="ShowPopup();" OnClick="Button1_Click" />

<asp:ModalPopupExtender runat="server" ID="programmaticModalPopup" BehaviorID="modalpopup" TargetControlID="loginButton" PopupControlID="programmaticPopup" BackgroundCssClass="modalBackground" DropShadow="True" RepositionMode="RepositionOnWindowScroll"></asp:ModalPopupExtender>

<asp:Panel runat="server" CssClass="ModalPopupBG" ID="programmaticPopup" Style="background-color: #FFFFCC; display: none; height: 25px; width: 85px; padding: 10px">
    <div id='messagediv' style="text-align: center">
    Loading...</div>
</asp:Panel>

サーバー側コード:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    'do stuff here
    Dim str As String = ""
End Sub
4

2 に答える 2

0

UpdateProgress コントロールを調べましたか? ModalPopup を実行する特定の理由はありますか?

編集: ボタンのOnClientClickプロパティを使用してみましたか? これにより、JavaScript を介してモーダル ポップアップを表示し、サーバー側に従って、時間のかかる操作を実行できます。

return true;完全なPostBackがサーバーに送信されるように、JavaScriptメソッドから確認してください。

于 2013-06-13T14:59:37.963 に答える
0

ボタンタグにクリックイベント(OnClick="Button1_Click")を追加する必要があります。

<asp:Button ID="Button1" runat="server" Text="Button"  OnClick="Button1_Click" />

あなたの問題は、ModalPopup がクライアント側を表示していることです。

サーバーへのポストバックをトリガーする必要があります。

ModalPopup のダミー ターゲットを追加する

< asp:Button runat="server" ID="HiddenTargetControlForModalPopup" style="display:none" />

TargetControlID="HiddenTargetControlForModalPopup" を設定します

Button1_Click イベント内で ModalPopupExtender1.show() を呼び出します。

Button1 はサーバー側のイベントをトリガーします。

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style>
        .ModalPopupBG
        {
            background-color: #666699;
            filter: alpha(opacity=50);
            opacity: 0.7;
        }

        .HellowWorldPopup
        {
            min-width: 200px;
            min-height: 150px;
            background: white;
        }
        .hide
        {
            display: none;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:Button ID="Button1" runat="server" Text="click" />
        <asp:Button ID="Button2" runat="server" Text="Button" CssClass="hide" />
        <cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" 
            TargetControlID="Button2" PopupControlID="Panel1" PopupDragHandleControlID="messagediv"
            Drag="true" BackgroundCssClass="ModalPopupBG">
        </cc1:ModalPopupExtender>

        <asp:Panel ID="Panel1" Style="display: none" runat="server">
            <div id='messagediv' style="text-align: center"  class="HellowWorldPopup">
                Loading...

            </div>
        </asp:Panel>
    </div>
    </form>
</body>
</html>

コードの後ろのページ

 Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        ModalPopupExtender1.Show()

    End Sub

を使用して ModalPopup を非表示にすることができます

ModalPopupExtender1.Hide() ;

お役に立てば幸いです

于 2013-06-13T12:17:43.733 に答える