0

我对 Ajax 完全陌生,没有接受过培训。我只是在复制同事的代码。我们有一个包含两个 Ajax 控件的页面:一个是我的同事编写的,一个是我编写的。除了一个项目外,一切都运行良好,而我的同事在另一个项目中受到他的关注,所以我需要弄清楚这一点。问题是我编写的 Ajax 控件弹出了一个带有两个按钮的 ListBox:关闭和选择。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>
4

1 回答 1

2

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

OnClientClick="return false;"

编辑

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

于 2013-04-17T17:13:16.173 回答