更新asp.net中updatepanel外部的UI控件

时间:2014-09-03 08:13:02

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

我正在尝试使用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());
        }
    }

1 个答案:

答案 0 :(得分:1)

控制updatepanel内部的更新

<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>

控制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());
}

希望这可以帮助你。