Avatar billede Lars Søndergaard Nybegynder
12. september 2005 - 15:02 Der er 10 kommentarer og
1 løsning

Finde object på parent Page fra en WebUserControl:

Jeg har en WebUserControl oprettet på en aspx side hvor jeg i codebehind opretter en custom Student class:

public Student myStudent;
myStudent = new Student();

Kan jeg i min indlejrede WebUserControl få fat på denne public class ?

if(true)
{
how?;
}
Avatar billede driis Nybegynder
12. september 2005 - 15:17 #1
Som jeg forstår det, har du en WebUserControl som skal tilgå et felt i din Page (aspx). Er det korrekt ? I så fald kan du i WebUSerControl:

if ( this.Parent is YourPage )
{
  YourPage yp = (YourPage)this.Parent;
  Student parentStudent = yp.myStudent;
}

Hvis du klassenavnet for din aspx er YourPage og myStudent er et public felt på YourPage.
Avatar billede Lars Søndergaard Nybegynder
12. september 2005 - 15:23 #2
Det er fundstændig korrekt forstået:

Jeg gør følgende:

GUI.Student mypage = (GUI.Student) this.Parent; //CAST EXCEPTION
cls_Student student = mypage.c_student;
Response.Write(student.Street);   

og får en "System.InvalidCastException: Specified cast is not valid."
Avatar billede Lars Søndergaard Nybegynder
12. september 2005 - 15:28 #3
Hvis jeg laver en Response.Write på this.Parent.ToString() får jeg TableCell ... Hmmm
Avatar billede driis Nybegynder
12. september 2005 - 15:28 #4
Det burde virke hvis typen af din aspx er GUI.Student, og din UserControl er placeret direkte på siden. Men måske skal du arbejde dig op gennem hierarkiet, hvis din UserControl f.eks. er placeret i en anden control. Noget i retning af:
private GUI.Student GetGuiStudent()
{
Control c = this.Parent;
while ( c != null )
{
  if ( c is GUI.Student )
    return (GUI.Student)c;
  else
    c = c.Parent;
}
}
Avatar billede driis Nybegynder
12. september 2005 - 15:30 #5
12/09-2005 15:28:14 >> Det er dit problem, din UserControl er placeret i en TableCell. Du skal arbejde dig op i hierarkiet til du når din Page. Se min sidste kommentar for et eksempel (ej afprøvet, men du skal også tilrette så det passer til dit brug).
Avatar billede driis Nybegynder
12. september 2005 - 15:31 #6
Placér en
return null;
nederst i GetGuiStudent, ellers kompilerer den ikke ;-)
Avatar billede Lars Søndergaard Nybegynder
12. september 2005 - 15:33 #7
hæhæ det virker sån her:

GUI.Student mypage = (GUI.Student) this.Parent.Parent.Parent.Parent.Parent;
cls_Student student = mypage.c_student;
Response.Write(student.Street);   

Men det er jo så grimt at det næsten ikke er til at bære.. kan det ikke laves pænere ? eller mere generisk.. det kunne jo sagtens tænkes jeg at hiver min usercontrol reference ud af den table den ligger i nu... ???
Avatar billede Lars Søndergaard Nybegynder
12. september 2005 - 15:34 #8
jeg bruger din while... fremragende...
Avatar billede Lars Søndergaard Nybegynder
12. september 2005 - 15:35 #9
halleluja.. jesus lever :D
Avatar billede driis Nybegynder
12. september 2005 - 15:36 #10
Ja, du må aldrig bruge sådan en
Parent.Parent.Parent.Parent...........Parent
løsning, det giver kun problemer ;-)
Avatar billede Lars Søndergaard Nybegynder
12. september 2005 - 15:48 #11
haha.. ja det er katastrofalt.. takker mange gange :)
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