Ik ben bezig met een user control die je met behulp van een SmartPart kan laden in Sharepoint Services. Voor zij die nog niet weten waar ik het over heb:
de site van Sharepoint Services http://www.microsoft.com/...s/sharepoint/default.mspx
de site van SmartPart (http://www.gotdotnet.com/...4d-41c3-8a88-3f974a7d0abe)
de site van Jan Tielens 'de' vader van Smart Part: http://weblogs.asp.net/jan/
Ik heb nog niet genoeg ervaring om in te schatten of mijn probleem Sharepoint/Smart Part specifiek is, of dat ik gewoon een .Net denk fout maak. Komt ie dan.
Ik heb een werkende user control waarmee ik een thumbnail kan maken van een Office document opgeslagen in Sharepoint. Deze thumbnail kan ik ook weergeven in de browser. De thumbnail en meta-data zitten in een class genaamd SharepointThumbnail. Ik wil de user de mogelijkheid bieden om een verzameling van thumbnails bij te houden in een class ThumbnailCollection. Als implementatie van die collectie heb ik gekozen voor een ArrayList.
Het probleem:
Na wat leeswerk ben ik er achter gekomen dat de class opnieuw geinstantieerd wordt iedere keer als de pagina een reload/submit/postback ondergaat. Ik heb geprobeerd de ArrayList te laten overleven door heb te bewaren in ViewState, Session en Cache. Maar ik krijg van Sharepoint een error ("An unexpected error has occurred."), zodra ik in ViewState, Session of Cache een object van een class bewaar. Dit gaat dus steeds fout:
Met literal typen (of value-typen?) gaat het wel goed. De EnableViewState property staat op 'true'.
Ligt dit aan:
A: aan mij?
B: aan een beperking in .NET?
C: aan een beperking in SmartPart/Sharepoint?
Mijn vraag:
Hoe krijg ik een de ArrayList en de objecten daarin "gepersist" (dit woord bestaat niet, I know
), zodat ze een PostBack overleven? Nota bene: iedere instance van ThumbnailCollection moet zijn eigen ArrayList bevatten.
de site van Sharepoint Services http://www.microsoft.com/...s/sharepoint/default.mspx
de site van SmartPart (http://www.gotdotnet.com/...4d-41c3-8a88-3f974a7d0abe)
de site van Jan Tielens 'de' vader van Smart Part: http://weblogs.asp.net/jan/
Ik heb nog niet genoeg ervaring om in te schatten of mijn probleem Sharepoint/Smart Part specifiek is, of dat ik gewoon een .Net denk fout maak. Komt ie dan.
Ik heb een werkende user control waarmee ik een thumbnail kan maken van een Office document opgeslagen in Sharepoint. Deze thumbnail kan ik ook weergeven in de browser. De thumbnail en meta-data zitten in een class genaamd SharepointThumbnail. Ik wil de user de mogelijkheid bieden om een verzameling van thumbnails bij te houden in een class ThumbnailCollection. Als implementatie van die collectie heb ik gekozen voor een ArrayList.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| public class SharepointThumbnail : ThumbnailBase { #region Members ...... #region Properties ...... #region Constructor ...... } public class ThumbnailCollection : System.Web.UI.UserControl, SmartPart.IUserControl { private ArrayList thumbNailList = null; public ThumbnailCollection() { thumbNailList = new ArrayList(); } } |
Het probleem:
Na wat leeswerk ben ik er achter gekomen dat de class opnieuw geinstantieerd wordt iedere keer als de pagina een reload/submit/postback ondergaat. Ik heb geprobeerd de ArrayList te laten overleven door heb te bewaren in ViewState, Session en Cache. Maar ik krijg van Sharepoint een error ("An unexpected error has occurred."), zodra ik in ViewState, Session of Cache een object van een class bewaar. Dit gaat dus steeds fout:
C#:
1
2
3
4
5
6
7
8
| // het onderstaande levert een error op: myArrayList = new ArrayList(); ViewState["myList"] = myArrayList; // dit ook: Size mySize = new Size(); ViewState["myList"] = mySize; // het lijkt steeds een error op te leveren als ik probeer: ViewState["myList"] = <anyObjectFromAClass>; |
Met literal typen (of value-typen?) gaat het wel goed. De EnableViewState property staat op 'true'.
Ligt dit aan:
A: aan mij?
B: aan een beperking in .NET?
C: aan een beperking in SmartPart/Sharepoint?
Mijn vraag:
Hoe krijg ik een de ArrayList en de objecten daarin "gepersist" (dit woord bestaat niet, I know