在Timer.Tick上更新PageTitle

时间:2010-06-14 19:02:03

标签: c# asp.net javascript ajax updatepanel

我有一个带有Timer的页面,它被用作UpdatePanel上的触发器。该页面还包含一个TabContainer和几个TabPanel。有关更多信息,请查看此question。基本上,我有一个UpdatePanel作为每个TabPanel的ContentTemplate中的元素,UpdatePanel由Timer触发。

我的页面通过在每个刻度上读取数据库来显示数据。我在代码隐藏中的每个Timer.Tick上都运行了以下代码:

protected void timeRefresher_Tick(object sender, EventArgs e)
{
    UpdateLivePageTitle();
}

UpdateLivePageTitle()函数从数据库中读取新信息并相应地设置Page.Title。但是,此信息当然不会发送到浏览器,因为没有完整的页面回发 - 只有异步回发到更新面板。因此,我的页面标题在整个页面被回发之前不会更新,这会破坏首先使用UpdatePanels的目的。

我认为有一种方法可以通过使用document.title JS元素并从UpdateLivePageTitle()中调用它来实现。但截至目前,我还没弄清楚如何做到这一点。我尝试在UpdateLivePageTitle()函数中使用以下内容:

string updatePageTitleScript = String.Format("document.title = '{0}'", newPageTitle);
ToolkitScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "UpdatePageTitle", updatePageTitleScript, true);

但结果是我的TabContainer停止渲染。我也不确定是否可以使用异步部分页面回发。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您忘记了脚本中的;

哦,如果我没记错的话,如果你设置Page.Title,框架应该可以更新标题。