Hallo,
habe ein Problem was meiner Meinung nach jeden Tag 10000x in Deutschland auftritt, und demnach einfach zu lösen sein MUSS !
Habe drei Seiten,
- meine ASPX Webseite
WebForm1, die zwei UserControls beinhaltet,
- links das UserControl
phMenuLeft, das eine Navigation beinhaltet,
- rechts das UserControl
phMenuMain, das beliebigen Content beinhaltet.
SO SIEHT'S AUS: www.delphi-forum.de/download.php?id=1297
Beim laden der ASPX Seite werden die beiden UserControls mit den entsprechenden Seiten "navigation.ascx" und "content.ascx" on page_Load geladen.
Im linken UserControl (= der Navigations"frame") klicke ich auf Button1, der dem WebForm1 sagen soll 'Lade im rechten Content"frame" eine neue Seite'. (Der Einfachheit halber, und weils eh nicht geht, sagen wir hier mal nur 'Seite das rechte UserControl einfach nur auf visible')
Ich bin zwar neu in der Thematik, aber ich glaube das ist eine gängige und völlig alltägliche Praxis eine Homepage aufzubauen oder?
Seht euch bitte mal den Code an, ich erhalte beim klicken auf den Button1 nur eine Fehlermeldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt".
Es scheint als könne das UserControl nicht auf seinen "parent" zugreifen, obwohl alles public deklariert ist und WebForm1 im UserControl auch bekannt ist.
Bin um JEDE Hilfe und JEDE Anregung dankbar da ich mir seit geraumer Zeit die Zähne daran ausbeiße!
Inhalt der Seite WebForm1.aspx
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| unit WebForm1;
interface
uses System.Collections, System.ComponentModel, System.Data, System.Drawing, System.Web, System.Web.SessionState, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls;
type TWebForm1 = class(System.Web.UI.Page) strict private procedure Page_Load(sender: System.Object; e: System.EventArgs); strict protected procedure OnInit(e: EventArgs); override; private public phMenuLeft: System.Web.UI.WebControls.PlaceHolder; phMenuMain: System.Web.UI.WebControls.PlaceHolder;
end;
implementation
procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); begin phMenuLeft.Controls.Add(Page.LoadControl('Navigation.ascx')); phMenuMain.Controls.Add(Page.LoadControl('Content.ascx')); end;
end. |
Inhalt der Navigationsseite Navigation.ascx
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| unit Navigation;
interface
uses System.Data, System.Drawing, System.Web, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls,WebForm1; type TNavigationControl1 = class(System.Web.UI.UserControl) strict private procedure Page_Load(sender: System.Object; e: System.EventArgs); strict protected Button1: System.Web.UI.WebControls.Button; Button2: System.Web.UI.WebControls.Button; procedure OnInit(e: System.EventArgs); override; private public end;
implementation procedure TNavigationControl1.Button1_Click(sender: System.Object; e: System.EventArgs); var test:TWebForm1; begin test := WebForm1.TWebForm1.Create;
test.phMenuMain.Visible:=true;
test.phMenuMain.Controls.Add(Page.LoadControl('Content_neu.ascx'));
test.phMenuMain.Visible:=false;
end;
end. |
Falls mehr Informationen benötigt werden kann ich diese gerne zur Verfügung stellen, ebenso den kompletten Source Code zum Download.
Moderiert von Christian S.: Topic aus .NET verschoben am Sa 17.09.2005 um 22:23