Such mal nach Page Lify Cycle oder Control Life Cycle in der Doku -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Montag, 22. November 2004 22:43 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder
ok. jetzt hab ich es verstanden. :-) mir war vorher die abfolge von init - load - und render nicht so ganz klar. muss jetzt nur noch schauen wie ich das mit den events hinbekommen. aber der jirko will mir ja seinen code zukommen lassen. ein anstrengender montag scheint sich dem positiven ende zu neigen. :-) danke für eure mithilfe! tom ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, November 22, 2004 9:35 PM Subject: AW: [Asp.net] Place Holder Du musst den ursprünglichen Control Tree in Page_Load (bzw. besser Init) zusammenbauen, dass der Framework die Events zuordnen kann... In PreRenden dann den "neuen" (sprich controls.clear() und das ganze nochmal) Das passt doch dann auch gut Page_Init --> BuildControlTree(); Event --> Ändert ControlTree(); PreREnder --> Wenn in Event was verändert wurde dann BuildControlTree(); -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Montag, 22. November 2004 19:42 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder also ich glaub, ich weiß jetzt, was mein problem ist... ich ändere ja quasi in der funktion meines control-buttons das control, das dem placeholder in der page_load funktion zugewiesen wird. da aber die page_load funktion VOR der funktion des control-buttons (event!) ausgeführt wird, besteht wohl die einzige möglichkeit für mich mit der page_load funktion zu kommunizieren über variablen, die im http string mitgegeben werden. also so: default.aspx?zielcontrol=1 ... oder sehe ich das falsch? ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, November 22, 2004 7:28 PM Subject: AW: [Asp.net] Place Holder Das tritt normalerweise auf, wenn der .Net Framework das Event dem Control nicht zuordner kann. Schau mal, das du allen Controls manuell eine ID vergibst. -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Montag, 22. November 2004 18:04 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder also ich bekomme echt no die krise hier ... wenn ich jetzt auf einen button innerhalb meines control drücke, führt er die funktion einfach nicht auf. es ist immer so, als würde das control zum ersten mal geladen werden ... ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, November 22, 2004 10:18 AM Subject: AW: [Asp.net] Place Holder Prinzipiell ok, wenn du es ganz schon machen willst, dann müssten die inneren Controls (willkommen, haendler etc) den Click auf den Button abfangen und ihrerseites ein Event "OnSiteChange" besitzen welches Sie dann feuern. Die äußere Seite würde sich dann bei diesem Event registieren und würde somit immer mitbekommen, wenn in einem der Controls was passiert. Dann hättest du den ganzen Control-Erstell und Viewstate Code in der äußeren Klasse und somit wäre alles schön abgetrennt voneinander. Gruß Andi -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Montag, 22. November 2004 09:33 An: ASP.NET Betreff: Re: [Asp.net] Place Holder mh. also erstelle tue ich die ja eh zur laufzeit. ich habe mir das so vorgestellt: in meinem behind-code default.vb habe ich in meiner klasse ein protected array mit den namen der controls (willkommen.ascx, haendler.ascx ...) in meinem viewstate speichere ich die position des arrays, um zu wissen, welches control aktuell geladen werden soll. drücke ich nun auf einen button in einem control, z.b. haendler.ascx, und will das control nr.1 in meinem array haben, dann setze ich in der click-funktion des buttons mein viewstate-merker auf 1. und in der render-funktion läd er dann: LoadControl(Array(Viewstate-Marker)) so hab ich mir das gedacht ... ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, November 22, 2004 9:09 AM Subject: AW: [Asp.net] Place Holder Im Normalfall lädst du die Controls einmal in Init, und dann wenn sich was ändert, erstellst du die Controls in PreRender nochmal. Irgnedwie so -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Montag, 22. November 2004 08:38 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder das problem ist, dass ich die art des controls, das ich laden möchte (ein integer-wert), ja in einer button_click funktion dem viewstate zuweise. der button_click wird aber wohl erst NACH der page_load funktion aufgerufen, aber VOR der prerender funktion. deswegen muss ich wohl die controls dort laden ... oder wie sehen das die anderen ? ? ? ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, November 21, 2004 11:05 PM Subject: AW: [Asp.net] Place Holder Ich glaub du solltest die Controls schon in Page_Init erstellen, dann ist der Viewstate früher da... musst ggf, den Page Life Cycle genauer durchgehen -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Sonntag, 21. November 2004 20:32 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder jo. hab mir in einem view-state einfach eine zahlenfolge für die controls gemerkt, die ich dann über ne array-liste referenziere. (dachte, wenn ich die dateinamen der controls im view-state hin und herschicke, ist das zu unsicher. dann kann einer ja die dateinamen manipulieren und wenn er in der lage ist, eine eigene datei auf den server hochzuspielen, könnte er die quasi als control laden ...) oder bin ich da zu paranoim? jedenfalls muß die zuweisung nicht in der Page_load funktion, sondern in der Prerender-funktion geschehen, da er erst dann die neue zuordung aus dem viewstate ausliest. :-) aber so scheints zu funzen ... ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, November 21, 2004 8:15 PM Subject: AW: [Asp.net] Place Holder Nene das auf keinen Fall (Session werden eigentlich nicht für so kleine Sachen verwendet). Du musst also quasi wissen welche Controls du in Page_Load erstellen willst. D.h. du verwendest quasi Controls als Inhaltselemente, z.B. als Item in einer Liste. Ich glaube da ist eventuell ViewState das richtige Stichwort. Da speicherst du aber nicht das komplette Control rein, sondern nur vielleicht ein Liste von Zahlen die du den zu ladenden Controls zuweißt.... Bin mir da nicht so sicher, vielleicht kann da noch jemand anders was dazu sagen -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Sonntag, 21. November 2004 19:53 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder und wie merke ich mir, welches control gerade geladen werden soll? dann muss ich mir das in einer session-variablen merken und dann in meiner page_load die zuweisung aus der session-variablen machen??? ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, November 21, 2004 7:50 PM Subject: AW: [Asp.net] Place Holder Controls müssen bei jedem Page_Load geladen werden!!!! (nicht nur beim ersten mal) -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Sonntag, 21. November 2004 19:28 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder oh man... also ich habe mir jetzt mal vs.net installiert. habe jetzt mal testweise folgendes gemacht: aspx-startdatei: da existiert ein Placeholder mit ID Inhalt Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then Dim holderControl As test1 holderControl = LoadControl("test1.ascx") holderControl.ID = "test1" holderControl.Inhalt2 = Inhalt Inhalt.Controls.Add(holderControl) End If End Sub die fülle ich im pageload mit dem control test1.ascx, welches einen button beinhaltet, der dem placeholder anschließend ein neues control zuweist. wo ja bekanntlich mein problem liegt. die funktion für diesen button ist wie folgt: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Dim InhaltTmp As PlaceHolder 'InhaltTmp = FindControl("Inhalt") Inhalt2.Controls.Clear() Dim holderControl As test2 holderControl = LoadControl("test2.ascx") holderControl.ID = "test2" Inhalt2.Controls.Add(holderControl) End Sub nach dem klick zeigt er mir leider eine leere seite an, obwohl in test2 ein eingabefeld sein sollte. wie ihr seht habe ich auch schon die funktion "findControl" versucht. leider vergebens. jetzt mal eine ganz andere frage: ist der ansatz überhaupt richtig? programmiert man websiten in dem stil? ich habe eine hauptseite default.aspx und einen placeholder, in den ich quasi durch controls all meine "unterseiten" reinlade ... oder ist das kein guter stil? ----- Original Message ----- From: "Andreas Rudischhauser" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, November 21, 2004 5:16 PM Subject: AW: [Asp.net] Place Holder Ich nehme mal an du hast kein Visual Studio oder? Das wäre viel einfacher damit. Für Codebehind gibt es in .NET zwei Mechanismen. Der eine wird von Visual Studio verwendet und erzeugt nachher eine .DLL Datei wo alle Klassen (ob Codebehind oder sonst) die in deinem Projekt sind, drin sind. Die ASPX Dateien werden dann direkt auf den Server kopiert, die DLL in /bin. Das hat den Vorteil dass man wenn man nur änderungen am Code hat, nur die DLL hochladen muss, und wenn man Seiten ändern, die DLL bleiben kann. Wenn du kein VS nutzt musst du den anderen Codebehind Weg gehen, welcher mit den .aspx.cs dateien arbeitet. Das Unterscheide sich übrigens in der @Page Deklarative. Musst mal in der Hilfe dazu lesen. // Codebehind Das Codebehind funktioniert glaube ich so das alles was du in einer ASPX machst vom .NET Framework auch in richtigen Programmcode umgewandelt wird, und dann leitet deine Codebehind Klasse davon ab. Im Endeffekt muss da einfach richtiger Programmiercode stehen. // Dein Problem Damit du mit den ganzen Klassen arbeiten kannst, musst du natürlich wissen wie die heißen. Verwendest du KEIN Codebehind, dann erzeugt der .NET Framework die Klassen selbst und du weißt die Namen nicht. Deshalb brauchst du das Codebehind, damit du nachher "casten" kannst. // Beispiel in c# weil ich vb nicht mehr kann Angenommen das willkommen.ascx hat im codebehin die klasse WillkommenControl WillkommenControl x = (WillkomenControl)LoadControl("willkommen.ascx") Damit wäre das x dein Control aber vom Typ "Willkomencontrol". Jetzt kannst du darauf auf alle enthaltenen Objekte zugreifen. Wenn du Visual Studio hättest würde es dir dann wenn du x. eingbist, sogar sagen welche Objekte darin liegen. // Fazit VS.NET muss her :) -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Beckert Gesendet: Sonntag, 21. November 2004 16:37 An: [EMAIL PROTECTED] Betreff: Re: [Asp.net] Place Holder also wenn ich das jetzt richtig verstanden habe, besteht die einzige möglichkeit, klasse in eine aspx-datei zu importieren, darin, dass ich sie zuerst in eine dll kompiliere und dann in das bin-verzeichnis lege ... jetzt bekomme ich beim kompilieren meiner haendler.vb die meldung: BC30469: Reference to a non-shared member requires an object reference. und zwar an der stelle: holderControl = LoadControl("willkommen.ascx") irgendwie verstehe ich nicht, warum das alles so kompliziert sein muss. oder habe ich nur einfach den falschen ansatz??? ----- Original Message ----- From: "Alexander Zeitler" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Saturday, November 20, 2004 7:18 PM Subject: RE: [Asp.net] Place Holder > > achso... ich glaub, ich habe dem gar keinen typen gegeben. :-/ > die source sieht so aus: > Vermutlich so (meine VB.NET Kenntnisse sind bescheiden): Public Class HaendlerControl Inherits System.Web.UI.UserControl Sub Suche_Click(sender As Object, e As EventArgs) Inhalt.Controls.Clear() Dim holderControl As Control holderControl = LoadControl("willkommen.ascx") holderControl.ID = "Kunden" Inhalt.Controls.Add(holderControl) End Sub Private Inhalt As PlaceHolder Public Property givePlaceHolder() As PlaceHolder Get Return Inhalt End Get Set Inhalt = Value End Set End Property End Class HaendlerControl wäre dann der Typ, den Du verwenden mußt. Außerdem wäre es eleganter, mit CodeBehind zu arbeiten. Gruss Alex _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net