1

ここでの問題は、ユーザーコントロール内にモーダルポップアップエクステンダーがあります。これは、マスターページ内のページ内の別のユーザーコントロールから呼び出されます。ページは最初のユーザーコントロールを動的にロードし、モーダルダイアログを表示したい場合は、ユーザーコントロールをプレースホルダーに動的にロードし、モーダルポップアップユーザーコントロールがロードされたときにモーダルのshowメソッドを呼び出します。

モーダル内には、いくつかのデータをデータベースに保存するためのいくつかのTextBoxとボタンがあります。

問題は、ButononClickイベントがまったく発生しないことです。モーダルコントロールのOnloadイベントにブレークポイントを追加しようとしましたが、親ユーザーコントロール(モーダルポップアップを保持するもの)のOnthe loadイベントに別のブレークポイントを配置すると、奇妙なことに、そこにブレークポイントが入りません。ブレークポイントは、親ユーザーコントロールのOnLoadイベントで正しく停止します。データをDBに保存するためにストアドプロシージャを呼び出す場所があるため、イベントハンドラーを使用する必要があります。

モーダルポップアップウィンドウを閉じるだけではなく、いくつかのテキストボックスを検証してからデータベースにデータを保存したいので、ボタンのイベントハンドラーを使用する必要があることに注意してください。

あなたのサポートのためのThaks

4

3 に答える 3

0

これは、モーダル ダイアログ ボックスが必要なアプリで使用する関数です。ボタンは実際には Jquery コードによって生成されるため、イベントが発生することが保証されます。

  $(function () {
           $(".addNew").dialog({
               autoOpen: false,
               width: 300,
               height: 300,
               modal: true,
               close: function (event, ui) {
           },
           buttons:
                   {
                       "Exclude Week": function () {

                           var cReason = $('#<%= ddlReasonCode.ClientID %> option:selected').text();
                           var Week = $('#<%= lblWeekChange.ClientID %>').text();

                           $.ajax(
                                   {
                                       type: "POST",
                                       url: "Ajax/ExcludeWeek.aspx",
                                       data: "week=" + Week + "&reasonCode=" + cReason,
                                       success: function (msg) {
                                           $('#resultDiv').text('Added to List');

                                       },
                                       error: function (x, e) {
                                           alert("The call to the server side failed. " + x.responseText);
                                       }
                                   }
                               );
                                   $(this).dialog("close");
                       },
                       "Cancel": function () {
                           $(this).dialog("close");
                       }
                   }
       });


   });

// これは、ダイアログをトリガーするために使用されるコードです:

$(".addNew").dialog("open");
于 2012-10-04T19:04:07.193 に答える
0

特定のシナリオではおそらく遅れていますが、プロジェクトで AjaxControlToolikit バージョンをアップグレードした後、同じ問題が発生しました。

問題は ModalPopupExtender プロパティ OkControlID です。ツールキットの新しいバージョンでは、サーバー側のクリックされたボタンのハンドラーは実行されず、代わりに OnOkScript クライアント側コードが実行されます。

私の場合、古い動作を復元するには、モーダル ポップアップ エクステンダー宣言タグから OkControlID プロパティを削除する必要がありました。

それが役に立てば幸い。

于 2014-01-27T14:35:39.457 に答える