So,

ich hab's. Ich hab' zwar keine Ahnung warum es so ist, aber das
Hinzuf�gen der Controls aus dem Cache in den PlaceHolder, l�scht
diese aus dem gecachten Objekt. Ich komm nicht dahinter, warum
das so ist.

So funktioniert es aber:

ControlCollection _CachedItems = (ControlCollection)
Cache[Utilities.cacheKey("MainContent")];

object [] CachedItems = new object[_CachedItems.Count];
_CachedItems.CopyTo(CachedItems, 0);

for(int i=0; i<CachedItems.Length; i++) {
        Control CurrentItem = new Control();
        CurrentItem = (Control) CachedItems.GetValue(i);
        CurrentItem.ID = Guid.NewGuid().ToString();
        EasyBaseContent.Controls.AddAt(i, CurrentItem);
}

Cache[Utilities.cacheKey("MainContent")] = EasyBaseContent.Controls;

Ich weise die ControlCollection einfach erneut zu, was mir laut
Tracing auch keine merklichen Performance-Einbu�en bringt.

Aber wenn jemand wei�, warum und wieso das oben so nicht funktioniert,
dann bitte melden!!!

Gru�, Thomas

http://blogs.dotnetgerman.com/thomas/  

> -----Urspr�ngliche Nachricht-----
> Von: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Bandt
> Gesendet: Donnerstag, 2. Dezember 2004 14:19
> An: [EMAIL PROTECTED]
> Betreff: AW: [Asp.net] Controls verschieben - aber wie?
> 
> So, jetzt bin ich einen Schritt weiter:
> 
> ---------------------------------------------------------------
> 
> ControlCollection _CachedItems = (ControlCollection)
> Cache[Utilities.cacheKey("MainContent")];
> 
> Trace.Warn("_CachedItems.Count 0", _CachedItems.Count.ToString());
> 
> object [] CachedItems = new object[_CachedItems.Count];
> 
> _CachedItems.CopyTo(CachedItems, 0);
> 
> Trace.Warn("_CachedItems.Count 1", _CachedItems.Count.ToString());
> 
> for(int i=0; i<CachedItems.Length; i++) {
>       Control CurrentItem = (Control) CachedItems.GetValue(i);
>       CurrentItem.ID = Guid.NewGuid().ToString();
>       EasyBaseContent.Controls.AddAt(i, CurrentItem);
> 
> }
> 
> Trace.Warn("_CachedItems.Count 2", _CachedItems.Count.ToString()); 
> 
> ---------------------------------------------------------------
> 
> Das funktioniert - allerdings nur beim ersten Aufruf, denn nachdem
> alle Controls in den PlaceHolder geadded sind, ist CachedItems
> wieder leer!
> 
> Wie kann das sein? Ich verstehe es �berhaupt nicht mehr... konkret:
> sobald EasyBaseContent.Controls.AddAt(i, CurrentItem) da drin steht
> (oder auch nur add), dann wird _CachedItems geleert. Aber WARUM?
> 
> Gru�, Thomas
> 
> http://blogs.dotnetgerman.com/thomas/ 
> 
> > -----Urspr�ngliche Nachricht-----
> > Von: [EMAIL PROTECTED] 
> > [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Bandt
> > Gesendet: Donnerstag, 2. Dezember 2004 13:05
> > An: [EMAIL PROTECTED]
> > Betreff: AW: [Asp.net] Controls verschieben - aber wie?
> > 
> > Hallo,
> >  
> > > hast Du es schon mal nur mit Add versucht?
> > 
> > ja - macht keinen Unterschied.
> > 
> > > Hast Du vielleicht irgendwo ein .Controls.Clear() danach?
> > 
> > EasyBaseContent definitiv nicht, nein.
> > 
> > > Was liefert EasyBaseContent.Controls.Count ?
> > 
> > Den korrekten Wert, zumindest beim ersten Aufruf. Das sollte
> > also stimmen.
> > 
> > > Wann f�hrst Du den Code oben aus? (Stichwort Life Cycle)
> > 
> > im Page_Load(), allerdings: beim ersten Aufruf der Seite laufe
> > ich in einen anderen Zweig, in dem die Controls ebenfalls in
> > den PlaceHolder geadded werden - nur kommen sie nicht aus der
> > gecachten Collection, sondern werden neu erzeugt. Da funktioniert
> > es aber.
> > 
> > Gru�, Thomas
> > 
> > http://blogs.dotnetgerman.com/thomas/ 
> > 
> > 
> > _______________________________________________
> > 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

Antwort per Email an