更新内容页面主页定时器TIck上的控件

时间:2015-05-08 15:32:14

标签: c# asp.net

我有一个母版页

<asp:Timer ID="masterTimer" runat="server" Interval="1000" OnTick="masterTimer_Tick"/>
        <asp:UpdatePanel runat="server" ID="time" UpdateMode="Always" ChildrenAsTriggers="True">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="masterTimer" EventName="Tick"/>
            </Triggers>
            <ContentTemplate>
                <asp:Label runat="server" ID="lblTime"></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>

在代码背后我有简单的

protected void masterTimer_Tick(object sender, EventArgs e)
        {
            this.lblTime.Text = DateTime.Now.ToString("ddd MMM dd yyyy h:mm:ss tt");
        }

在内容页面中我有

Dictionary<Guid, string> data = dataClass.DataDictionary();

然后我在默认页面(内容页面)中创建标签类型的动态服务器控件。服务器控件具有Text属性。现在我的问题是,在每个刻度线上它确实读取了正确的数据意味着数据字典包含更新的数据,它确实将其分配给标签文本属性,但它不显示更新的文本。

我正在创建我的CustomeLabel

    CustomLabel newLabel = new CustomLabel
    {
        Text          = "Label",            
        Width         = 200,
        Height        = 150,
    };
    this.Controls.Add(newLabel);

以下是从LinkLabel派生的CustomLabel类,它具有以下属性

public string Text { get; set; }
public int Width { get; set; }
public int Height { get; set; }

readonly LinkButton Label              = new LinkButton();

protected override void OnLoad(EventArgs e)
{
  Label.Text = Text;
}

protected override void Render(HtmlTextWriter output)
{
  base.Render(output);
}

如果有人告诉我我需要做什么,我将不胜感激

1 个答案:

答案 0 :(得分:2)

这可能适合你:

子页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="ChildPage.aspx.cs" Inherits="ChildPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

    <asp:UpdatePanel ID="MyUpdatePanel" runat="server">
        <ContentTemplate>
            <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
        </ContentTemplate>

    </asp:UpdatePanel>


</asp:Content>


public partial class ChildPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label newLabel = new Label
        {
            Text = "Label",
            Width = 200,
            Height = 150,
        };
        newLabel.Text = "Label: " + DateTime.Now.ToString();

        PlaceHolder1.Controls.Add(newLabel);       
    }
}