在ASP.NET AJAX中单击ModalPopup中的OkButton时进行回发
-
03-07-2019 - |
题
我按照 Atlas:使用创建确认书中的示例进行操作单击ModalPopup中的OkButton(它使用ASP.NET Ajax Control Toolkit中的ModalPopupExtender)时,ModalPopup Extender 进行回发,但正如我所看到的,Sys.WebForms.PostBackAction()是ASP.NET AJAX中不再存在(示例适用于Atlas)。当我运行它时,“Microsoft JScript运行时错误:预期的对象”错误消息引发,在我创建PostBackAction的javascript中的行。如何在ASP.NET AJAX中使用它,或者,还有另一种方法可以做到这一点?谢谢
解决方案
您是否考虑过使用 ConfirmButtonExtender ?你得到模态“bling”通过扩展程序,您将获得所需的PostBack处理。
您正常处理按钮点击事件,但确认扩展程序将“拦截”。如果用户确认了该动作,则处理并允许继续。
其他提示
服务器端事件可以与ModalPopupExtender一起使用。您需要做的是创建一个显示样式设置为无的按钮。然后将ModalPopupExtender的TargetControlID属性设置为隐藏按钮ID。
<asp:Button ID="btnShowModal" runat="server" Text="Show" OnClick="btnShowModal_Click" />
<asp:Button ID="btnHidden" runat="server" Style="display: none" />
<ajaxControlToolkit:ModalPopupExtender ID="modalExtender" runat="server"
TargetControlID="btnHidden" PopupControlID="divId" />
在OnClick处理程序中显示模态:
modalExtender.Show();
在将关闭模态(通常是按钮)的控件的处理程序中隐藏模态:
modalExtender.Hide();
我能够成功地使用此方法回发到服务器,以便在回发期间使用数据库中的信息填充模态中的控件。像冠军一样工作。
如果我没有正确记住ModalPopupExtender,它会将OKControlID设置为您的按钮ID。
你能不能只在“onclick”上分配你的按钮。调用回发的clientide处理程序?
例如:
myModalPopupExtender.OkButtonID = myOKButton.ID;
string script = ClientScriptManager.GetPostBackEventReference(myOKButton, myOKButton.ID);
myOKButton.Attributes.Add("onclick", script);
编辑:它看起来像此处的另一个潜在解决方案。一>
您可以在面板中放置一个不可见的按钮,并将其设置为OkButton。在面板中添加您的实际按钮并添加其OnClick事件处理程序。请参阅以下代码:
<cc1:ModalPopupExtender
TargetControlID="btnSubmit"
DropShadow="true"
OkControlID="btnOK"
CancelControlID="btnDecline"
PopupControlID="pnlTermsAndConditions"
BackgroundCssClass="popup"
ID="ModalPopupExtender1"
runat="server">
</cc1:ModalPopupExtender>
<asp:Panel ID="pnlTermsAndConditions" runat="server">
<table width="500" cellpadding="6" cellspacing="0" border="0" bgcolor="white">
<tr>
<td><b>Tables and Content</b></td>
</tr>
<tr>
<td><asp:TextBox ID="TermsAndCondition" runat="server" TextMode="MultiLine" Rows="10" Columns="60">
This is my terms and condoition
</asp:TextBox></td>
</tr>
<tr>
<td align="center">
<asp:Button ID="btnAccept" runat="server" CssClass="btn" Text=" Accept " OnClick="btnAccept_Click" />
<asp:Button ID="btnDecline" runat="server" CssClass="btn" Text=" Decline " />
<asp:Button ID="btnOK" style="display:none;visible:false;" runat="server" CssClass="btn" Text=" OK " />
</td>
</tr>
</table>
</asp:Panel>
这是我一直在寻找的解决方案。好帖子。顺便说一下,创建模拟OK按钮不是必需的。只是不要在Modal Popup Extension定义中包含可选的OKbutton参数。
也许只是在按钮上添加服务器端OnClick事件?这应该回发整个表格。 或者您可以从html($ find('myFormName')或其他东西)获取主窗体并在其上执行.submit()。