没有OnClick事件的Ajax按钮导致回发

时间:2013-04-17 17:04:54

标签: asp.net ajax

我是Ajax的新手,没有接受过培训。我只是在复制一个同事的代码。我们有一个包含两个Ajax控件的页面:一个是我的同事写的,另一个是我写的。一切都工作正常,除了一个项目,我的同事在另一个项目中达到他的眼球,所以我需要弄清楚这一点。问题是我写的Ajax控件弹出一个带有两个按钮的ListBox:Close和Select。 “选择”按钮具有OnClick事件并导致回发,如预期的那样。但是,“关闭”按钮具有OnClick事件仍然会导致回发。对于我的同事编写的位于同一页面上的非常类似的Ajax控件,情况并非如此。代码如下。我的同事的代码涉及电子邮件模板;我的涉及电子邮件查询。对于我的生活,我没有看到任何差异。谁能告诉我为什么我的关闭按钮导致PostBack和我的同事没有?

<!--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>

1 个答案:

答案 0 :(得分:2)

服务器端按钮始终会导致回发。解决它的一种方法是添加一个返回false的客户端点击函数。

OnClientClick="return false;"

修改

您的同事已在CancelControlID="BtnTemplateClose"上定义了ModalPopupExtender。这就是压制帖子的原因。您还定义了CancelControlID,但我找不到您发布的代码中的任何位置的关闭按钮(btnClose)。你控制中的关闭按钮在哪里?如果您确保关闭按钮的ID为btnClose,那么它很可能就像您的同事的关闭按钮一样。