2

我遵循Atlas: Creating a Confirmation Using the ModalPopup Extender to make a postback when the OkButton in a ModalPopup is clicked(它使用 ASP.NET Ajax Control Toolkit 中的 ModalPopupExtender)中的示例,但正如我所见,Sys .WebForms.PostBackAction() 不再存在于 ASP.NET AJAX 中(该示例适用于 Atlas)。当我运行它时,在我创建 PostBackAction 的 javascript 行中出现“Microsoft JScript 运行时错误:预期对象”错误消息。我怎样才能使它在 ASP.NET AJAX 中工作,或者也许有另一种方法可以做到这一点?谢谢

4

6 回答 6

5

服务器端事件确实适用于 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();

我能够成功地使用此方法回发到服务器,以便在回发期间使用来自数据库的信息填充我的模式中的控件。像冠军一样工作。

于 2009-05-22T17:11:20.910 回答
2

如果我没记错 ModalPopupExtender,它有一个 OKControlID,您将其设置为按钮 ID。

你不能只在调用回发的“onclick”客户端处理程序上分配你的按钮吗?

例如,类似:

 myModalPopupExtender.OkButtonID = myOKButton.ID;
 string script = ClientScriptManager.GetPostBackEventReference(myOKButton, myOKButton.ID);

 myOKButton.Attributes.Add("onclick", script);

编辑:这里看起来像是另一个潜在的解决方案。

于 2009-04-30T21:45:50.730 回答
2

您是否考虑过使用ConfirmButtonExtender?您通过扩展程序获得模态“bling”,并且您将获得所需的 PostBack 处理。

您可以正常连接按钮单击事件以进行处理,但 Confirm 扩展程序将“拦截”处理并在用户确认操作时允许事情继续进行。

于 2009-04-30T22:00:55.763 回答
2

您可以在面板中放置一个不可见的按钮并将其设置为 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>
于 2009-06-04T13:39:14.423 回答
2

这是我一直在寻找的解决方案。很棒的帖子。顺便说一句,不必创建模拟 OK 按钮。只是不要在 Modal Popup Extension 定义中包含可选的 OKbutton 参数。

于 2009-07-30T18:36:38.167 回答
1

也许只是将服务器端 OnClick 事件添加到按钮?这应该发回整个表格。或者您可以从 html ($find('myFormName') 或其他东西) 获取主表单并对其执行 .submit() 。

于 2009-04-30T21:38:51.420 回答