[英]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.