簡體   English   中英

UserControl外的頁面中的控件未在PreRender上更新

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM