Avatar billede www.jakub.dk Nybegynder
16. maj 2006 - 17:24 Der er 5 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 thrytter Nybegynder
16. maj 2006 - 18:45 #1
Der er ikke nogen vej uden om - dynamisk tilføjede kontroller skal tilføjes hver gang ved postback.
Avatar billede www.jakub.dk Nybegynder
16. maj 2006 - 19:58 #2
Ok hvordan gør jeg det?
Avatar billede lyngzo Nybegynder
17. maj 2006 - 01:08 #3
i page_load

fanger du postback spledes
C#:
if(PostBack)
{
  kald en function der add'er dine controller
}

VB.net
if(postback) then
  kald sub der add dine kontroller
end if
Avatar billede www.jakub.dk Nybegynder
17. maj 2006 - 10:47 #4
Det er ikke konkret nok. Det fandt jeg selv ved at læse på nettet.

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 www.jakub.dk Nybegynder
17. maj 2006 - 10:47 #5
Svar
Avatar billede snepnet Nybegynder
19. maj 2006 - 00:07 #6
Det har de bestemt ikke, og det giver vel for så vidt meget god mening at der ikke indsættes kontroller på siden, hvis de ikke er indsat i kontroltræet.
Der er lavet kontroller der kan gøre det for dig:
http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx
Mvh
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