2013-04-17 53 views
0

我對Ajax完全陌生並且沒有接受過培訓。我只是抄襲了同事的代碼。我們有一個包含兩個Ajax控件的頁面:一個是我的同事寫的,一個是我寫的。除了一件商品外,一切都運行良好,而我的同事在另一個項目中也很喜歡他的眼球,所以我需要弄清楚這一點。問題是我寫的Ajax控件彈出一個帶有兩個按鈕的ListBox:Close和Select。按預期,選擇按鈕有一個OnClick事件並導致回發。但是,關閉按鈕確實有而不是有一個OnClick事件並仍然會導致回發。這與我的合作者編寫的非常類似的Ajax控件並不屬於同一頁面。代碼如下。我的同事代碼涉及電子郵件模板;我的電子郵件地址包含電子郵件查詢。對於我的生活,我沒有看到任何區別。任何人都可以告訴我爲什麼我的關閉按鈕導致回發和我的同事不?沒有OnClick事件的Ajax按鈕導致回發

<!--my co-worker's control--> 
<tr> 
     <td width="20%"><br /><div class="formtext">Email Template:</div></td> 

<td colspan="3"><br /> 
    <asp:Button ID="btn_ShowTemplate" runat="server" 
     Text="View/Edit Template" /> 
     <ajax:ModalPopupExtender ID="mpTemplate" runat="server" PopupControlID="panelTemplate" TargetControlID="btn_ShowTemplate" 
    CancelControlID="BtnTemplateClose" BackgroundCssClass="modalBackground"> 
</ajax:ModalPopupExtender> 

<asp:Panel ID="panelTemplate" runat="server" CssClass="modalPopupTemplate" align="center"> 
      <div class="formtext_modal">Litigation Hold Email Template <img src="images/v2/modal_email.png" alt="Email" /><br /></div> 
      <cc1:Editor ID="TemplateEditor" runat="server" Width="675px" Height="400px" /> 
      <br /> 
    <asp:Button ID="BtnTemplateClose" runat="server" Text="Close" CssClass="btnMatterClose" />&nbsp;&nbsp; 
    <asp:Button ID="btnTemplateSave" runat="server" Text="Save" CssClass="btnMatterSelect" OnClick="btnTemplateSave_Click" /> 
</asp:Panel></td> 
    </tr> 

<!--my control--> 
<tr> 
    <!-- email cc section --> 
    <td>Email CC:<br /></td> 
    <td colspan="3"><asp:Button ID="btnEmails" runat="server" Text="Lookup Email" />&nbsp;&nbsp;<asp:TextBox 
      ID="tbEmails" runat="server" Width="80%" ReadOnly="true"></asp:TextBox><br /> 
    <ajax:ModalPopupExtender ID="mpEmails" runat="server" PopupControlID="panelEmails" TargetControlID="btnEmails" 
    CancelControlID="btnClose" BackgroundCssClass="modalBackground"> 
</ajax:ModalPopupExtender> 
<asp:Panel ID="panelEmails" runat="server" CssClass="modalPopupAttorneys" align="center"> 
    <table align="center" width="100%"> 
    <tr> 
     <td> 
     <div class="formtext_modal">Email(s) Lookup <img src="images/v2/modal_search.png" alt="Search" /></div><br /> 
     <asp:Label ID="Label3" runat="server" Width="600px" CssClass="formtext" 
       Text="Add Employees to Email CC line"></asp:Label> 
      <div style="BORDER: thin solid; OVERFLOW: auto; WIDTH: 600px; HEIGHT: 140px"> 


       <asp:CheckBoxList ID="cblEmails" runat="server" Width="600px" Height="140px" SelectionMode="Multiple"> 
       </asp:CheckBoxList> 
      </div> 

     </td> 
    </tr> 

回答

2

服務器端按鈕始終導致回發。解決這個問題的一種方法是添加一個返回false的客戶端點擊函數。

OnClientClick="return false;" 

編輯

你的同事對ModalPopupExtender定義的CancelControlID="BtnTemplateClose"。這就是壓制這個帖子的原因。您也有定義的CancelControlID,但是我找不到您發佈的代碼中的任何地方的關閉按鈕(btnClose)。控制中的關閉按鈕在哪裏?如果您確定關閉按鈕的ID爲btnClose,那麼它很可能會像您的同事的關閉按鈕一樣工作。

+0

但是我的同事的關閉按鈕不*會導致回發。我通過在Page_Load上放置一個斷點並通過調試器運行應用程序來驗證這一點。 – Melanie

+0

@Melanie,我更新了我的答案 –

+0

就是這樣,喬納斯。我應該有btnEmailClose而不是btnClose。我可能在某個時候重命名了該按鈕,並忘記在CancelControlID後更改該名稱。謝謝! – Melanie