none
RenderPreText a PostBack

    Dotaz

  • Všechny zdravím,

     

    tvořím vlastní TreeNode, který má obsahovat dva TextBoxy:

     

    public class TimeValidTreeNode:TreeNode

    {

    private TextBox txtValidFrom = new TextBox();

    private TextBox txtValidTo = new TextBox();

     

    protected override void RenderPreText(HtmlTextWriter writer)

    {

    Guid g1 = Guid.NewGuid();

    Guid g2 = Guid.NewGuid();

    this.txtValidFrom.ID = g1.ToString();

    this.txtValidTo.ID = g2.ToString();

    this.txtValidFrom.RenderControl(writer);

    this.txtValidTo.RenderControl(writer);

    base.RenderPreText(writer);

    }

     

    Funguje to, ale bohužel jen do prvního PostBacku, po kterém textBoxy zmizí. Přitom ale RenderPreText se po postBacku volá.

     

    Umí někdo poradit?

     

    Díky

    pondělí 14. července 2008 5:49

Odpovědi

Všechny reakce

  •  

    Pokud by to někdo potřeboval, dozvěděl jsem se od kolegy, jak na to - TreeView, který tento uzel bude používat musí mít přepsánu metodu CreateNode tak, aby vracela tento typ uzlu:

     

    protected override TreeNode CreateNode()

    {

          return new TimeValidTreeNode();

    }

     

     

    Zatím ovšem nedokážu přesvědčit vyrenderované TextBoxy, aby si zapamatovaly svoji hodnotu i přes PostBack.

    úterý 15. července 2008 8:33
  • Celý Váš problém je v nerespektování životního cyklu stránky.

    Načítání hodnoty TextBoxu a její nastavení do dalšího requestu se děje ve fázi LoadPostData stránky, která je mnohem dříve než finální Rendering. Pokud tedy přidáváte TextBoxy do stránky až v Renderingu, nemůže to nikdy fungovat.

     

    Musíte tak činit mnohem dříve, ideálně už ve fázi Init.

     

    Životní cyklus requestu/stránky viz

    http://knowledge-base.havit.cz/asp-net/Detail-ASP-NET-Request-Page-LifeCycle-diagram-schema.aspx

     

    středa 16. července 2008 20:16
    Moderátor