[英]Controls in page outside UserControl not updating on PreRender
这是我的代码:
<asp:Label ID="myLabel" runat="server" Text="first label"></asp:Label>
<uc:myControl ID="myControl" runat="server" /> //contains a checkbox
myControl.ascx.cs
public bool changeLabel { get; set; }
protected void checkbox_CheckedChanged(object sender, EventArgs e) {
changeLabel = ((CheckBox) sender).Checked ? true : false;
}
myPage.aspx.cs
protected void Page_PreRender(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
myLabel.Text = myControl.changeLabel == true ? "second label" : "first label";
}
}
在调试模式下,我可以看到我的新值“第二个标签”,但它不在页面中呈现。 有什么建议吗?
您无法在pre-render中设置回发时的值,因为在此事件之后,页面会将ViewState应用于控件,从而更改其值。 因此,您设置得太早了。 更好的主意是页面加载事件。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
myLabel.Text = myControl.changeLabel == true ? "second label" : "first label";
}
}
尝试做这样的事情:
protected void checkbox_CheckedChanged(object sender, EventArgs e)
{
Label l = (Label)this.Page.FindControl("myLabel");
if (l != null && checkbox is checked)
{
l.Text = "second label";
}
else
{
l.Text = "first label";
}
}
:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.