我使用usercontrol在页面左侧显示标签文本,另一个用户控件显示内容页面,当内容页面上的字段文本发生变化时,我需要在标签上更新相同的状态在左边的菜单usercontrol上。
我用过:
ScriptManager.RegisterClientScriptBlock(this, this.GetType(),"ChangeLabelText", script, false)
要更改左侧控件上的文本,与此关联的javascript将被执行,但即使在页面刷新后更新内容页面上的文本,标签仍会显示旧文本。但是,它会在整个页面刷新时显示新的更新文本。
请提出解决此问题的方法。
答案 0 :(得分:0)
如果页面上有两个UserControl,并且想要从第一个控件中的代码更新第二个控件中的Label,则需要使用FindControl
。
//find the other control in the parent
Control control = Parent.FindControl("WebUserControl2") as Control;
//find the label in that control
Label label = control.FindControl("Label1") as Label;
//update the label
label.Text = "Updated from another control";
<强>更新强>
如果您想使用javascript进行更新,则必须确保发送正确的ID
。
ScriptManager.RegisterStartupScript(Page, GetType(), "changeLabel", "changeLabel('WebUserControl2_Label1', 'Updated with JS')", true);
和javscript函数
<script type="text/javascript">
function changeLabel(id, text) {
document.getElementById(id).innerHTML = text;
}
</script>