【问题标题】:Update UI controls outside the updatepanel in asp.net在 asp.net 的更新面板之外更新 UI 控件
【发布时间】:2014-10-27 15:56:44
【问题描述】:

我正在尝试使用 ref 更新更新面板之外的控件。以下链接。但它不工作。我想知道我缺少什么。在我的应用程序中,无法在更新面板中使用这些标签。

http://msdn.microsoft.com/en-us/library/bb301423(v=vs.110).aspx

HTML

 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="Updatepaneltest._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
    function PageLoadingHandler(sender, args) {
        var dataItems = args.get_dataItems();
        if ($get('Label1') !== null)
            $get('Label1').innerHTML = dataItems['Label1'];
        if ($get('Label2') !== null)
            $get('Label2').innerHTML = dataItems['Label2'];
    }
</script>
<asp:UpdatePanel ID="UpdatePanel1"  runat="server">
<ContentTemplate>
   UpdatePanel content.
   <asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" Text="hiii" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</asp:Content>

后面的代码

 protected void Page_Load(object sender, EventArgs e)
    {
       // ScriptManager ScriptManager1 = ScriptManager.GetCurrent(this.Page);
        if (ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack)
        {
            ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString());
            ScriptManager1.RegisterDataItem(Label2, DateTime.Now.Year.ToString());
        }
    }

【问题讨论】:

    标签: c# asp.net ajax asp.net-ajax updatepanel


    【解决方案1】:

    在更新面板中控制更新,

    <asp:UpdatePanel ID="UpdatePanel1"  runat="server">
    <ContentTemplate>
    <asp:Button ID="Button1" Text="Submit" runat="server" />
    <asp:Label ID="Label1" Text="hiii" runat="server" /> <br />
    <asp:Label ID="Label2" runat="server" />
    </ContentTemplate>
    </asp:UpdatePanel>
    

    在更新面板之外控制更新,

     <asp:UpdatePanel ID="UpdatePanel1"  runat="server" UpdateMode=Conditional>
    <ContentTemplate>
    <asp:Button ID="Button1" Text="Submit" runat="server" />
    </ContentTemplate>
    </asp:UpdatePanel>
    <asp:Label ID="Label1" Text="hiii" runat="server" /> <br />
    <asp:Label ID="Label2" runat="server" />
    

    稍后,在客户端写下一行。

    var pageInstance = Sys.WebForms.PageRequestManager.getInstance();
    pageInstance.add_pageLoaded(UpdateLabelHandler);
    
    function UpdateLabelHandler(sender, args)
    {
      var ControldataItems = args.get_dataItems();
      if ($get('Label1') !== null)
        $get('Label1').innerHTML = ControldataItems ['Label1'];
      if ($get('Label2') !== null)
        $get('Label2').innerHTML = ControldataItems ['Label2'];
    }
    

    代码背后:

    protected void Page_Load(object sender, EventArgs e)
    {
            ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString());
            ScriptManager1.RegisterDataItem(Label2, DateTime.Now.Year.ToString());
    }
    

    希望对您有所帮助。

    【讨论】:

    • 抱歉,我不能在更新面板中使用这些标签。还有其他选择吗..?
    • 看来,我的回答也提到了同样的事情。
    • 抱歉,我没有找到您更新的答案。它工作正常。
    • 嗨..你能检查一下文本框吗?它在文本框中不起作用。但它在标签中起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多