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