我是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" />
<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" /> <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>
答案 0 :(得分:2)
服务器端按钮始终会导致回发。解决它的一种方法是添加一个返回false的客户端点击函数。
OnClientClick="return false;"
修改强>
您的同事已在CancelControlID="BtnTemplateClose"
上定义了ModalPopupExtender
。这就是压制帖子的原因。您还定义了CancelControlID,但我找不到您发布的代码中的任何位置的关闭按钮(btnClose
)。你控制中的关闭按钮在哪里?如果您确保关闭按钮的ID为btnClose
,那么它很可能就像您的同事的关闭按钮一样。