c#中的innerHtml

时间:2014-10-24 18:27:36

标签: c# asp.net ext.net

我有<td id="StatusPreview" runat="server"></td>,它由js函数填充:

document.getElementById('StatusPreview').innerHTML = Ext.getCmp('TYComboEdit').getRawValue();

现在,我想在点击按钮时更改c#中td的内容。

我创建了以下方法:

    protected void hiddentoggletofrenchBackend(object sender, DirectEventArgs e)
    {
        this.StatusPreview.InnerHtml = "aaaaa";
    }

它不会改变td上的内容。 但是,如果我在设置InnerHtml警报aaaaa后发出警报,即使td内容未更改以反映此情况。如果我在设置InnerHtml之前发出提醒,则提醒为空白。

如何更改div的InnerHtml?

谢谢!

更新

如果我将html更改为<td id="StatusPreview" runat="server">q</td>,则如果在设置q之前放置了InnerHtml,则会显示aaaaa,如果放在后面则会切换到InnerHtml。 好像{{1}}在页面加载上取值,而不是当前值。

2 个答案:

答案 0 :(得分:2)

要在DirectEvent期间更新ASP.NET控件,您应该调用.Update()方法。

protected void hiddentoggletofrenchBackend(object sender, DirectEventArgs e)
{
    this.StatusPreview.InnerHtml = "aaaaa";
    this.StatusPreview.Update();
}

答案 1 :(得分:1)

runat=server添加到td元素会将其转换为HtmlTableCell控件。在此控件上设置内部文本的相关属性为InnerText

由于这是服务器端控件,因此只有在回发到服务器后才会发生任何更改。这意味着重新加载并重新呈现整个页面。您可以使用免费工具Fiddler检查对服务器和服务器响应的请求。假设实际上发生了回发,您确定不会使用在页面加载时运行的JavaScript覆盖新的内部文本吗?

你甚至需要为此做一个回发吗?如果&#34; aaaaa&#34;不是将成为数据库或其他查找的占位符,我会将替换文本呈现为隐藏的div或某些JavaScript,并完全用JavaScript进行文本更改。