在第二个面板

时间:2015-10-01 01:37:42

标签: javascript asp.net ajax

我的整体问题是能够使用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行有什么问题吗? 我似乎无法将手指放在解决方案上。 非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

尝试在标签上设置ClientIDMode。

<asp:Label ID="lblBlank" runat="server" Text="a" ClientIDMode="Static"></asp:Label>