2015-12-09 17 views
1

呼叫c#按鈕事件這是我的先例實現:如何從JQuery的對話框

example.aspx

<asp:Button ID="rejectButton" runat="server" Text="REJECT" OnClick="OnRejectButtonClick"/> 

example.aspx.cs

protected void OnRejectButtonClick(object sender, EventArgs e) 
{ 
    // a lot of stuff... 
    rejecter(); 
} 

...這工作。

現在我需要一個確認拒絕的對話框。現在我的代碼是:

example.aspx

<asp:Button ID="rejectButton" runat="server" Text="REJECT" OnClientClick="return openDialog();"/> 

<div id="dialog" title="Seleziona causa"> 
    <p>... bla bla...</p> 
</div> 

<script> 
    $(function() { 
     $("#dialog").dialog({ autoOpen: false, modal: true, show: "blind", hide: "blind", 
      buttons: { 
       "Okay": function() { 
        OnRejectButtonClick; // DOESN'T WORK! 
        $(this).dialog("close"); 

       }, 
       "Annulla": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 

    function openDialog() { 
     $("#dialog").dialog("open"); 
     return false; 
    } 
</script> 

example.aspx.cs沒有改變。

但是在此更改之後,OnRejectButtonClick事件的調用不再觸發。我怎樣才能解決這個問題?

回答

2

如果你不想使用jquery您可以使用此:

__doPostBack('<%= rejectButton.UniqueID %>', ""); 

因此您的代碼將是這樣的:

$(function() { 
     $("#dialog").dialog({ autoOpen: false, modal: true, show: "blind", hide: "blind", 
      buttons: { 
       "Okay": function() { 
        __doPostBack('<%= rejectButton.UniqueID %>', ""); 
        $(this).dialog("close"); 

       }, 
       "Annulla": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 
2

你需要用jquery調用它。

//before you click the button you should set a global variable 
serverEx = true; 
$("#rejectButton").click(); 

而在你的拒絕按鈕openDialog

function openDialog() { 

    if(serverEx) 
     return true; 

    $("#dialog").dialog("open"); 
    return false; 
} 

添加ClientIDMode="Static"像克里斯·戴維斯按鈕OnClientSciprt法說。

+0

請注意,您需要在標籤上使用'ClientIDMode =「Static」'才能使其工作,因爲它是一個ASP標籤,並且在轉換爲HTML之前將生成ID,導致ID稍有不同。 –

+0

@ChrisDavis是的,我忘了。 – mybirthname

0

你可以嘗試這樣的事:

__doPostBack('rejectButton','OnClick'); 

實際執行asp.net操作。