我的整体问题是能够使用ModalPopupExtender在第二个UpdatePanel中的一个UpdatePanel中显示数据结果。
开发我想要做的事情我正在使用网站http://www.asp.net/web-forms/overview/older-versions-getting-started/aspnet-ajax/understanding-asp-net-ajax-updatepanel-triggers上显示的使用两个UpdatePanel的示例
我已经设置了它并且它完美地工作。
现在我添加了ModalPopupExtender的复杂性。
我在使用Button1_ModalPopupExtender.Show()显示UpdatePanel时遇到了困难,所以我需要了解整个过程。
似乎ModalPopupExtender"显示" OnClientClick事件而不是onClick事件。这限制了在UpdatePanel之间传递数据的能力。
为了解决这个问题,我将TargetControlID设置为空白标签,并将Button1的onClick事件设置为Button1_Click。
在Button1_Click中,我在两个UpdatePanels中设置了标签的值,然后无法显示Popup。
通过许多在线搜索,我发现我可以从Button1_Click事件中激活JavaScript。我设置了一个名为showpopup()的javascript函数,并在Button1_Click中添加了对此的调用,这几乎完成了这项工作。
我的标记如下:
<%@ Page Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="WebForm3.aspx.vb" Inherits="CRMDash2.WebForm3" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<%@ OutputCache Location="None" NoStore="true" %>
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<script type="text/javascript">
function showmodalpopup() {
// see comments below for the impact of various entries here
return false;
}
</script>
<article>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" /><br />
<asp:Button ID="Button1" runat="server" Text="update both" CausesValidation="false" UseSubmitBehavior="false" OnClick="Button1_Click"/>
<asp:Label ID="lblBlank" runat="server" Text="a" ></asp:Label>
<ajaxToolkit:ModalPopupExtender
ID="Button1_ModalPopupExtender"
runat="server"
PopupControlID="Panel1"
CancelControlID="btnCancel"
BackgroundCssClass="modalbackground"
BehaviorID="Button1_ModalPopupExtender"
TargetControlID="lblBlank">
</ajaxToolkit:ModalPopupExtender>
<asp:Button ID="Button2" runat="server" Text="update this" onClick="Button2_Click"/>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" CssClass="modalpopup">
<asp:Label ID="Label2" runat="server" ForeColor="red" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</div>
</article>
</asp:Content>
现在我的代码背后是:
Public Class WebForm3
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs)
Label1.Text = DateTime.Now.ToLongTimeString
Label2.Text = DateTime.Now.ToLongTimeString
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "MyScript", "showmodalpopup();", True)
End Sub
Protected Sub Button2_Click(sender As Object, e As EventArgs)
Label1.Text = DateTime.Now.ToLongTimeString
End Sub
End Class
到剧本
如果我只是放置以下内容
<script type="text/javascript">
function showmodalpopup() {
alert("Hi!");
return false;
}
</script>
出现ModalPopup,我收到一个消息框,上面写着&#34;嗨!
如果我实际点击页面上的lblBlank,弹出窗口就会打开。
如果我尝试使用
点击lblBlank标签(以激活modalpopup) <script type="text/javascript">
function showmodalpopup() {
document.getElementById("lblBlank").click();
//alert("Hi!");
return false;
}
</script>
我收到错误0x800a138f - JavaScript运行时错误:无法获取属性&#39;点击&#39;未定义或空引用
我在网上尝试了很多不同的建议,我总是得到未定义或空引用。
当我使用alert(this.name);我得到了一个空白。
如何在标签上触发点击事件以便我的弹出窗口显示? ScriptManager.RegisterScript行有什么问题吗? 我似乎无法将手指放在解决方案上。 非常感谢帮助。
答案 0 :(得分:0)
尝试在标签上设置ClientIDMode。
<asp:Label ID="lblBlank" runat="server" Text="a" ClientIDMode="Static"></asp:Label>