2012-05-10 36 views
2

運行服務器側方法「M試圖調用服務器側功能在嵌套的jquery對話框從嵌套jquery的對話框

設計是這樣的:

[第一對話]

  • 點擊一個按鈕打開第二個對話框
  • 點擊另一個按鈕運行服務器端方法。 (工作正常)
  • 一個gridview獲取由服務器端方法更新。

[第二對話]

  • 點擊按鈕運行服務器側方法 變種btnConfirm =的document.getElementById( 「<%= BtnAvailEmpAccept.ClientID%>」); btnConfirm.click();

[第一個對話框]按預期工作正常,但在[第二個對話框]中沒有任何反應。 [第二個對話框] javascript代碼被執行,但從來沒有命中服務器端的方法。

每個對話框的兩個「div」包含在一個updatepanel中,因爲我有gridview通過按鈕單擊事件進行更新。

這是[第二個對話框]

$confirmWindow = jQuery("#empConfirmDiv"); 
          $confirmWindow.show(); 
          $confirmWindow.dialog("open"); 
          //instantiate the dialog 
          $confirmWindow.dialog({ 
           dialogClass: "empConfirmDialog", 
           maxHeight: 600, 
           width: 1200, 
           resizable: false, 
           modal: true, 
           position: 'center', 
           autoOpen: false, 
           title: 'Exception - Confirmation', 
           overlay: { opacity: 0.5, background: 'black' }, 
           buttons: { 
            "Decline": function() { 
             var btnDecline = document.getElementById("<%= BtnAvailEmpReject.ClientID %>"); 
             btnDecline.click(); 

            }, 
            "Left Message": function() { 
             var btnMsg = document.getElementById("<%= BtnAvailEmpMsg.ClientID %>"); 
             btnMsg.click(); 
            }, 
            "Confirm": function() { 
             var btnConfirm = document.getElementById("<%= BtnAvailEmpAccept.ClientID %>"); 
             btnConfirm.click(); 
            }, 
            "Cancel": function() { 
             $(this).dialog("close"); 
            } 

           } 
          }); 

ASP:按鈕來運行服務器端的方法:

<asp:Button ID="BtnAvailEmpAccept" runat="server" Width="10px" Height="10px" OnClientClick="return SetValidateTrue()" 
          OnClick="BtnAvailEmpAccept_Click" /> 

沒有人有想法,爲什麼button.Click()不會調用服務器端方法?

>編輯:這是我的答案!

var showDialogConfirmEmp = function() { 
     $confirmWindow = jQuery("#empConfirmDiv"); 
     $confirmWindow.show(); 
     $confirmWindow.dialog("open"); 
    } 

    var myWindowConfirmEmp =   
     jQuery("#empConfirmDiv").dialog({ 
      dialogClass: "empConfirmDialog", 
      maxHeight: 600, 
      width: 1200, 
      resizable: false, 
      modal: true, 
      position: 'center', 
      autoOpen: false, 
      title: 'Exception - Confirmation', 
      overlay: { opacity: 0.5, background: 'black' }, 
      buttons: { 
       "Decline": function() { 
        var btnDecline = document.getElementById("<%= BtnAvailEmpReject.ClientID %>"); 
        btnDecline.click(); 
       }, 
       "Left Message": function() { 
        var btnMsg = document.getElementById("<%= BtnAvailEmpMsg.ClientID %>"); 
        btnMsg.click(); 
       }, 
       "Confirm": function() { 
        var btnConfirm = document.getElementById("<%= BtnAvailEmpAccept.ClientID %>"); 
        btnConfirm.click(); 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 

      } 
     }); 

    var showDialogAvailEmp = function() { 
     SetValidateTrue(); 
     if (IsScheduleWorkChecked()) { 
      var button = document.getElementById("<%= btnListEmp.ClientID %>"); 
      button.click(); 
      $myWindowAssign = jQuery("#availEmpDiv"); 
      $myWindowAssign.show(); 
      $myWindowAssign.dialog("open"); 
      $myWindowAssign.parent().appendTo(jQuery("form:first")) 
     } 
     else { 
      alert("Please select a work to assign!"); 
     } 

    } 
    var myWindowAvailEmp = jQuery("#availEmpDiv").dialog({ maxHeight: 600, 
     width: 700, 
     resizable: false, 
     modal: true, 
     position: 'center', 
     autoOpen: false, 
     title: 'Exception - Available Employees', 
     overlay: { opacity: 0.5, background: 'black' }, 
     buttons: [{ 
      text: "Proceed", 
      "id": "btnProceed", 
      click: function() {       
       Page_IsValid = true; 
       if (Page_IsValid) { 
        var btnProceed = document.getElementById("<%= btnProceed.ClientID %>"); 
        btnProceed.click(); 
       } 
       $confirmWindow = jQuery("#empConfirmDiv"); 
       $confirmWindow.show(); 
       $confirmWindow.dialog("open"); 
       myWindowConfirmEmp.parent().appendTo(jQuery("form:first")); 

      } 
     }, 
      { 
       text: "Cancel", 
       "id": "btnAvailCancel", 
       click: function() { 
        $(this).dialog("close"); 
       } 
      }] 
    }); // myWindow 


    // JQuery UI: Diaglog 
    jQuery(document).ready(function() { 

     jQuery("#BtnAssign").click(showDialogAvailEmp); 
     //variable to reference window 
     myWindowAvailEmp.parent().appendTo(jQuery("form:first")); 
     ... 
+0

打開它之前是不是應該配置對話框?在你的代碼中,你首先打開它然後配置。 –

+0

Codrin Eugeniu:無論您先配置對話框還是在打開時進行配置都無關緊要。 – devphil

回答