0

ポストバックで値を使用するために値を入力するウィンドウをポップアップしようとしています。

私はインターネットでたくさん検索し、サーバー コントロールのポップアップ コードを作成することができました。以下は私のコードです。

しかし、これだけ構築した後、ダイアログの「Charge」ボタンからボタンクリックイベント(ポストバックを行う)を発生させることができず、入力された値を使用する方法がありません。

document.getElementById("<%=Open.ClientID %>").click();使用済みと同じく使用感なしの「チャージ」から使ってみました $(e.currentTarget).unbind('click'); e.currentTarget.click();。しかし、うまくいきませんでした。

    $(document).ready(function() {  

    $('#Open').click(function(e){
                e.preventDefault();
                $( "#Open-dialog" ).dialog( "open" );
    });

 $( "#Open-dialog" ).dialog({
            modal: true,
            autoOpen: false,
            height: 255,
            width: 300,
            buttons: {
                "Charge": function() {
                     var amount = $('#Amount').val();                                                                                  
                     $( this ).dialog( "close" ); 
                     return true;               
                },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            },
    });   
});

    <form id="form1" runat="server">   
    <asp:Button id="Open" Text="Charge" runat="server" OnClick="Open_Click"/>
    <asp:Label ID="txt" Text="hi" runat="server" Visible="false"></asp:Label>
    <div id="Open-dialog" style="display: none;" title="Enter Amount">
        <label for="Amount">Amount</label>
        <input type="text" name="Amount" id="Amount" class="text ui-widget-content ui-corner-all" value="$" />
    </div>
    </form>

どの質問でもこれを行うことの明確な図を見つけることができません.誰かが私を助けて、続行する方法についてのヒントを教えてください..

前もって感謝します..

4

2 に答える 2

4

開くボタンはサーバー コントロールです。クライアント ID をキャッチする必要があり、_dopostback(action, param) を呼び出して、[変更] ボタンのクリック時に手動ポストバックを適用する必要があります。

<script>
        $(document).ready(function () {

            $('[id$=Open]').click(function (e) {
                e.preventDefault();
                $("#Open-dialog").dialog("open");
            });
            $("#Open-dialog").dialog({
                modal: true,
                autoOpen: false,
                height: 255,
                width: 300,
                buttons: {
                    "Charge": function () {
                        var amount = $('#Amount').val();
                         //manual do post back
                        __doPostBack('btnSave ', amount)
                        $(this).dialog("close");
                        return true;
                    },
                    Cancel: function () {
                        $(this).dialog("close");
                    }
                },
            });
        });
    </script>

サーバー側では、次の方法で投稿をキャッチできます

 protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                string amount = Request["__EVENTARGUMENT"]; // parameter
                string btnSave = Request["__EVENTTARGET"]; // actionname
            }

        }

幸せなコーディング...

ブラウザで _dopostback is undefined エラーが発生した場合は、こちらを参照してくださいHanselman または、Zip ファイルを取得して、新しいブラウザ ファイルを App_Browsers に手動で配置する必要があります。

于 2013-03-07T18:54:09.690 に答える
2

最後に、解決策を見つけることができます。誰かがポストバック付きのJqueryダイアログボックスを探しているなら、私はそれをすべてまとめています。

<script type="text/javascript">
    $(document).ready(function() {
        $('#Open').click(function(e){
                    e.preventDefault();
                    $( "#Open-dialog" ).dialog( "open" );
        });
     $( "#Open-dialog" ).dialog({
                modal: true,
                autoOpen: false,
                height: 255,
                width: 300,
                buttons: {
                    "Charge": function() {  
                         __doPostBack("<%= Open.UniqueID %>", $('#Amount').val()); 
                         $( this ).dialog( "close" );                                    

                    },
                    Cancel: function() {
                        $( this ).dialog( "close" );
                    }
                },
        });
    });
</script>

<form id="form1" runat="server">
<asp:Button ID="Open" Text="Charge" runat="server" OnClick="Open_Click" CausesValidation="false" />
<asp:Label ID="txt" Text="hi" runat="server" Visible="false"></asp:Label>
<div id="Open-dialog" style="display: none;" title="Enter Amount">
    <label for="Amount">
        Amount</label>
    <input type="text" name="Amount" id="Amount" class="text ui-widget-content ui-corner-all"
        value="$" />
</div>
</form>

スクリプトエラーが発生した場合

「__doPostBack」は未定義です

追加

ClientScript.GetPostBackEventReference(this, string.Empty);

このスレッドで貴重な情報を提供してくださった皆様、ありがとうございました..

于 2013-03-11T15:41:37.727 に答える