我按照 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" />&nbsp;&nbsp;
    <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()。

scroll top