我有<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}}在页面加载上取值,而不是当前值。
答案 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进行文本更改。