Hej, Hej Jonas, Tack för ett bra inlägg!User Controls och Web parts i SharePoint 2007?
Efter att ha migrerat från SharePoint 2003 till SharePoint 2007 tänkte jag nu börja utveckla web parts "på riktigt". Tidigare har jag kört sidvisningswebparten och specificerat egenutvecklade ASPX-sidor i denna. Det har fungerat bra, men det blir ju som sagt inga "riktiga" web parts.
Nu har jag läst en del om att det skulle vara enklare att skapa web parts i 2007an genom att "wrappa" UserControls, och jag funderar nu på best-practices för detta...
Min önskan är att varje webbapplikation jag bygger (och tidigare har byggt) ska byggas in i olika web parts. Detta medför att mina webbapplikationer lätt skulle kunna användas över hela sharepointsiten precis som vilken web part som helst, och inga URLer skulle behöva anges för var applikationerna egentligen finns.
Mina frågor är då: hur kan jag växla mellan olika kontroller i samma webpart beroende på ett klick på exempelvis en linkbutton på UserControlen (som då finns inuti webparten)? Vilken typ av projekt ska jag skapa för detta (webbprojekt verkar mest logiskt, men dessa verkar inte vara lika lätta att "signa" som vanliga klassbilbiotek)? Hur kan jag göra för att få bra debugmöjligheter även när jag inte kör web parten på SharePointen (min utvecklingsmaskin har inte WSS installerat då det är en XP-burk, kan jag debugga med hjälp av ASP.NETs WebPartManager och WebPartZone)?
Stort tack på förhand!Sv: User Controls och Web parts i SharePoint 2007?
Förstår inte riktigt frågan. Vill du byta UserControl i den webpart som 'wrappar' den, genom ett klick på nån kontroll i densamma eller är det kontroller I UC'n som du vill växla mellan?
För övrigt verkar du vara på rätt väg... Den webpart jag kodat för att visa usercontrols är en helt vanlig webpart kodad med System.Web.UI.WebControls.WebParts-namnrymden...Användarna får välja usercontrol i edit-menyn för den ("Modify Shared Webpart") och de usercontrols som finns att tillgå ligger i VirtualDirectories/[portpådinwebapp]/wpresources/usercontrols (vilket är en katalog jag valt själv) och sedan använder jag helt enkelt kommandot LoadControl för att ladda userkontrolen i webparten.
Min egna är en enkel som bara den, men det finns avancerade varianter och då tänker jag främst på SmartPart...
Så svar på vilket projekt du behöver blir alltså de projket du använder för att koda webparts annars. Antingen med mallarna från MS eller också ett class library. Koda sedan dina Web User Controls (*.ascx) och ladda dem i webparten....
Riktigt smidigt...Sv:User Controls och Web parts i SharePoint 2007?
Det låter som en bra lösning du har där! Hur gör du för att hantera rättigheter på de olika webbdelarna? Anta följande: det finns två usercontrols, en heter "Måluppföljning" och en "Måluppföljning Administration". Användarna som använder "Måluppföljning" ska inte ha tillgång till "Måluppföljning Administration". Om val vilken usercontrols som ska visas görs via "Modify Shared Webpart" kan väl vanliga användare växla till administrationskontrollen? Förbiser jag något?
Min tanke från början var att jag skulle ha en webpart för varje applikation. En applikation består här av kanske fyra olika usercontrols, ex: "listItems.ascx", "handleItem.ascx", "log.ascx" och "newItem.ascx". Dessa skulle jag då vilja ha i en webpart som heter "ListItemsWebPart". När man lägger till webparten på sidan skulle då "listItems.ascx" vara aktiv, men beroende på vad man trycker på på den kontrollen skulle även de andra kontrollerna laddas in vid behov.
Applikationerna "Måluppföljning" och "Måluppföljning Administration" skulle således vara helt skilda från varandra, och vara uppbyggda av ett antal usercontrols i grund och botten. Min tanke är då att det är lättare att hindra användare som inte har tillgång till att nå "Måluppföljning Administration" genom vanlig SharePoint-funktionalitet.
Jag har nu skaffat mig en utvecklingsmaskin med WSS installerat vilket underlättar vid debuggningen. Jag kommer åt objektmodellen i SharePoint, men kan även debugga genom att ha en testwebappplikation som använder sig av WebPartManager-kontrollerna för att testköra en webpart. Vet fortfarande inte hur jag ska göra när jag designar usercontrollerna; helst skulle jag vilja ha både ha den vanliga HTML-designern men samtidigt ha med dem i webpartklassbiblioteket. Tips och idéer mottages tacksamt!