【问题标题】:Update Content page Controls on Master Page Timer TIck更新母版页计时器 TIck 上的内容页控件
【发布时间】:2015-05-08 15:32:14
【问题描述】:

我有一个母版页

<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();

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

我正在像这样创建我的 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);
}

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

【问题讨论】:

  • 请显示创建和设置标签控件文本的代码。
  • @SteveWellens 刚刚更新了我的问题
  • CustomLabel 服务器比仅仅使用 Label 有什么目的?
  • @Sully,msdn 在这里提到了msdn.microsoft.com/en-us/library/aa651710(v=vs.71).aspx 的点数,但我主要将其用于抽象和我的权限对其状态
  • 我在问 CustomLabel 的目的是什么。主要是因为您在下面选择的答案只是使用普通的旧标签。我相信您在使用 CustomLabel 时遇到问题,因为您定义了已经在基类中定义的属性,而没有覆盖它们。所以渲染的是基类属性,而不是你的“新”成员。

标签: c# asp.net


【解决方案1】:

这可能对你有用:

子页面:

<%@ 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);       
    }
}

【讨论】:

  • 成功了!!!我没有添加到占位符中,而是添加到了 this.control.add 中,它添加到了表单中。谢谢史蒂夫,我很感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多