Avatar billede www.jakub.dk Nybegynder
15. maj 2006 - 22:15 Der er 2 kommentarer og
1 løsning

Problem med tilgang til en dynamisk tilføjet WebUserControl

Hej Eksperter!

Jeg har prøvet at løse dette problem et stykke tid nu, og jeg kan ikke finde på en fornuftig løsning selv. Har søgt nettet rimmelig meget og læst dokumentationen for .NET 1.1. Men alle sider som jeg fandt manglede lige at gennemgå det problem som jeg sidder med:

Jeg har en WebUserControl hvor jeg kun har en TextBox på og kildekoden er her:
public class WebUserControl1 : System.Web.UI.UserControl
{
  protected System.Web.UI.WebControls.TextBox TextBox1;
  public String Text { get { return TextBox1.Text; } set {  TextBox1.Text=value; } }       
 
  private void Page_Load(object sender, System.EventArgs e)
  {
  }
  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
    InitializeComponent();
    base.OnInit(e);
  }
  private void InitializeComponent()
  {
    this.Load += new System.EventHandler(this.Page_Load);
  }
  #endregion
}
-------

Denne WebUserControl tilføjer jeg til min side på følgende måde i Page_Load:

for (Int32 i=0;i<10;i++)
{
  WebUserControl1 wuc = (WebUserControl1)LoadControl("WebUserControl1.ascx");
  wuc.Text=i.ToString();
  plhUserControls.Controls.Add(wuc); // Tilføjer til PlaceHolder
}

------
Jeg tilføjer den altså dynamisk og et vilkårigt antal. På den side hvor jeg tilføjer WebUserControl har jeg en knap hvor actionlisteneren ser således ud:

private void Button1_Click(object sender, System.EventArgs e)
{
  foreach (Control c in plhUserControls.Controls)
  {
    WebUserControl1 wuc = (WebUserControl1)c;
    if (wuc.Text.Equals("5")) TextBox1.Text="Found match";
  }
}
------
Problemet her er at min PlaceHolder ikke indeholder nogen Control objekter ved PostBack. De er som forsvundet fra serversiden.

Spørgsmålet er hvordan jeg får fat i mine dynamisk tilføjet WebUserControl's på serveren ved en PostBack.

Håber at nogen af jer kan hjælpe mig med at løse dette problem!
Avatar billede driis Nybegynder
15. maj 2006 - 22:29 #1
Du skal altid rebuilde dine dynamisk oprettede kontroller ved postback - de eksisterer ikke bare af sig selv. Selvom man godt kunne ønske sig, at Microsoft havde lavet support for at ens kontrol hierarki kunne persistes mellem postback.
Avatar billede www.jakub.dk Nybegynder
15. maj 2006 - 22:34 #2
Ja jeg har læst om dette et par steder, men jeg har endnu ikke set et eksempel. Du skal være velkommen til at give en, fordi ærligt talt så har jeg prøvet at rebuilde mine WebUserControls (Sådan som jeg opfatter dette skal gøres) men uden held.

Du kunne evt. angive en link til et sted med et eksempel.
Avatar billede www.jakub.dk Nybegynder
17. maj 2006 - 10:46 #3
Har løst det selv ved at læse fra Reqest.Form[strControlId+":"+strTextBoxId] og reloade controlen ved postback.

Jeg vil da sige at det er en besværlig måde at gøre det på. Håber at MS har gjort dette bedre i 2.0
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester