[ASP.Net/C#/Sharepoint]Code integreren in Sharepoint

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Rob1106
  • Registratie: November 2004
  • Laatst online: 22-04-2024
Mijn eerste post in de devschuur! Ben sinds kort aan het programmeren voor een comakership en loop nu tegen een probleempje aan.

Ik heb een ASP.Net project gemaakt met daarin een default.aspx pagina met c# code en Linq code. Ook een dataclasses.dbml file met de koppeling naar een SQL database. Nu wil ik dit project in een Sharepoint pagina hangen, dit wil dus niet echt lukken.

Ik krijg het wel voor elkaar om enkel wat code in een sharepoint pagina te laten werken door alle code in een aspx pagina te gooien met wat comments erbij. Maar zodra de dataclasses.dbml aangesproken moet worden samen met de database wil het niet echt meer lukken.

Iemand die weet hoe ik de code wel in een .aspx file kan krijgen, of misschien een andere manier om het probleem op te lossen??

Edit:
Sorry voor de topictitel. Ik vergeet het probleem erbij te zetten: Hoe code in .aspx pagina te plakken om in Sharepoint te integreren?

[ Voor 9% gewijzigd door Rob1106 op 06-05-2009 12:16 . Reden: Topictitel ]

Core i7 920 | Asus P6T Deluxe V2 | OCZ 6GB | EVGA 260GT 216c | OCZ Vertex 3 60GB | WD vRaptor 150GB | Adaptec 5805 - RAID5: 5,4TB | Lian-Li PC-A7110


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
offtopic:
Ik heb de titel iets aangepast, maar hij kan niet zo lang zijn als jij voorstelt. Voortaan kan je een TR doen om een titel wijziging te vragen


Graag zie ik echter wel dat je wat meer informatie geeft, je zegt dat het niet lukt. Maar je zegt niet wat er niet lukt. Welke foutmelding krijg je, of wat gaat er mis?

[ Voor 63% gewijzigd door Woy op 06-05-2009 12:21 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Rob1106
  • Registratie: November 2004
  • Laatst online: 22-04-2024
Ok, bedankt voor de titelfix en ik zal wat meer toelichten.

Ik heb een ander project, kleiner met slechts een default class, in een .aspx file geplaatst met wat extra comments zoals onderstaande gebeuren:

<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="System.Web.UI.WebControls.WebParts" %>
<%@ Import Namespace="System.Web.UI.HtmlControls" %>
<%@ Import Namespace="System.Linq" %>
<%@ Import Namespace="System.Xml.Linq" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>cascadingDropdowns</title>
<script language="CS" type="text/C#" runat="server">
<<< C# CODE HIER >>>
</script>
</head>
<body>
<<< Standaard aspx meuk hier >>>
</body>
</html>


Nu heb ik in bovenstaande dus alleen wat extra code (default class) tussen de <script> </script> toegevoegd en de standaard aspx meuk in de body. Als ik dan de aspx file in de 12>TEMPLATES>LAYOUTS file zet op de sharepoint server dan kan ik dit stukje code gebruiken in sharepoint als ik het bestand aanroep. Dit werkt prima aangezien ik dus maar 1 enkele klasse erin heb zitten.

Nu heb ik dus te maken met meerdere klassen en nog een database. Nu vraag ik me af hoe ik dit nu dan moet aanpakken. En of dat überhaupt wel kan op deze manier of dat ik misschien een andere manier moet proberen > zeker aangezien er nog een database in het spel is.

Ik heb nu geprobeerd om op dezelfde manier eerst alleen de default class van het project in de aspx file te zetten, dit werkte niet. Ook geprobeerd om de dataclasses.dbml erbij te zetten en dan werkt het ook niet.

Core i7 920 | Asus P6T Deluxe V2 | OCZ 6GB | EVGA 260GT 216c | OCZ Vertex 3 60GB | WD vRaptor 150GB | Adaptec 5805 - RAID5: 5,4TB | Lian-Li PC-A7110


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 17:04

Haan

dotnetter

Wat bedoel je precies met 'in SharePoint' krijgen? En wat is 'het wil niet echt lukken'? Daar moet je wat duidelijker in zijn. dat had je al gedaan :)

Het gaat zo te zien om een webpart, deze kan je het makkelijkst ontwikkelen op de SharePoint server zelf, dan kan je een extension voor Visual Studio gebruiken en direct naar SharePoint deployen.

Sowieso is het veel handiger om je code in losse code-behind files te stoppen, en niet in de aspx pagina zelf, dat is gewoon veel onhandiger. Andere classes komen in je App_Code map.

[ Voor 21% gewijzigd door Haan op 06-05-2009 12:55 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Rob1106 schreef op woensdag 06 mei 2009 @ 12:41:
Nu heb ik in bovenstaande dus alleen wat extra code (default class) tussen de <script> </script> toegevoegd en de standaard aspx meuk in de body. Als ik dan de aspx file in de 12>TEMPLATES>LAYOUTS file zet op de sharepoint server dan kan ik dit stukje code gebruiken in sharepoint als ik het bestand aanroep. Dit werkt prima aangezien ik dus maar 1 enkele klasse erin heb zitten.

Nu heb ik dus te maken met meerdere klassen en nog een database. Nu vraag ik me af hoe ik dit nu dan moet aanpakken. En of dat überhaupt wel kan op deze manier of dat ik misschien een andere manier moet proberen > zeker aangezien er nog een database in het spel is.

Ik heb nu geprobeerd om op dezelfde manier eerst alleen de default class van het project in de aspx file te zetten, dit werkte niet. Ook geprobeerd om de dataclasses.dbml erbij te zetten en dan werkt het ook niet.
Als je code hebt die je wilt her-gebruiken op verschillende plekken, en in verschillende projecten, kun je in visual studio een project van het type Library maken. Dit levert een Assembly ( Dll ) op die je in je andere projecten kunt gebruiken.

Zoals Haan dus ook al zegt is het handiger om de code niet in je .aspx pagina op te nemen, maar in aparte code files. Op die manier hou je je opmaak en je logica ook beter gescheiden.

[ Voor 7% gewijzigd door Woy op 06-05-2009 12:59 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Rob1106
  • Registratie: November 2004
  • Laatst online: 22-04-2024
Even een kleine toelichting: Ik programmeer pas enkele maanden in C# en Visual Studio. Daarvoor heb ik echt amper geprogrammeerd dus ik ben nogal een n00b in de development wereld. Ook is bij het bedrijf waar we de opdracht doen de ondersteuning weggevallen na vertrek van een medewerker. Ook zitten we nog eens met een deadline die heel snel dichterbij komt....

Wat ik bedoel met niet lukken is dat de zodra ik de aspx file aanspreek op de sharepoint server:
http://moss2007nl:40000/_layouts/<bestandsnaam>.aspx dan krijg ik de toepassing te zien zoals hij er na het builden uitziet in visual studio uiziet (de aspx file die wel werkt dan). Bij de aspx file die niet werkt krijg ik gewoon een melding: FOUT: onbekende fout.

Ik begrijp dat dit komt doordat de code verwijst naar een database en die kan ik uiteraard niet in de aspx file zetten. Zoals ik er nu over nadenk werkt deze manier dus gewoon niet voor wat ik wil doen maar enkel indien er slechts een stukje code word gebruikt.

Wat ik nu dus moet doen is waarschijnlijk op de server de database deployen. Dan moet ik mijn code aanpassen zodat hij werkt met de database op de server. Daarna moet ik de code op een of andere manier integreren in sharepoint. Hoe kan ik dit laatste het makkelijkst doen?? Probleem is dat de code is ontwikkeld als c# web site en niet als webpart....

Nogmaals excuus als het echt n00b gebeuren is allemaal, maar we lopen hier echt een beetje op vast met de projectgroep.
Woy schreef op woensdag 06 mei 2009 @ 12:58:
[...]

Als je code hebt die je wilt her-gebruiken op verschillende plekken, en in verschillende projecten, kun je in visual studio een project van het type Library maken. Dit levert een Assembly ( Dll ) op die je in je andere projecten kunt gebruiken.

Zoals Haan dus ook al zegt is het handiger om de code niet in je .aspx pagina op te nemen, maar in aparte code files. Op die manier hou je je opmaak en je logica ook beter gescheiden.
Dit lijkt mij zelf ook handiger inderdaad, maar wij wisten niet hoe we de code files dan in sharepoint zouden krijgen.

Ik begrijp van Haan dat ik dus inderdaad beter op de server zelf kan developen. Als ik op de server zelf ga developen en ik installeer die plug-in dan kan ik dus gewoon heel makkelijk deployen naar sharepoint?

Moet ik dan ook alsnog een project van het type library maken of dat niet?? Ik weet dat ik dan misschien ook gewoon een project kan maken als web-part? Of komt daar dan weer meer bij kijken??

In elk geval vast bedankt voor de reacties, het word al wat duidelijker ;)

[ Voor 28% gewijzigd door Rob1106 op 06-05-2009 13:16 ]

Core i7 920 | Asus P6T Deluxe V2 | OCZ 6GB | EVGA 260GT 216c | OCZ Vertex 3 60GB | WD vRaptor 150GB | Adaptec 5805 - RAID5: 5,4TB | Lian-Li PC-A7110


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 17:04

Haan

dotnetter

Blijft de vraag hoe de pagina in SharePoint gebruikt gaat worden? Moet het een webpart zijn? -> begin opnieuw, maar dan met een webpart project. De code die je hebt kan je voor het overgrote deel hergebruiken.

Als het gewoon een losse pagina is die in SP getoond wordt, kan je met het huidige project verder werken, maar doe dan wat ik al eerder zei en haal de code naar losse .cs files. De huidige manier werkt alleen voor heel eenvoudige pagina's met een klein beetje code,maar daar ben je zelf nu ook al achter ;)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Tranzity
  • Registratie: Januari 2001
  • Niet online
Er zijn diverse ingangen in SharePoint voor code. Ik denk dat voor jouw probleem een SmartPart host het beste is: http://www.codeplex.com/smartpart (mits er een .ascx aanhangt).
Check anders eens in je 12\LOGS wat de precieze foutmelding is.

Acties:
  • 0 Henk 'm!

Verwijderd

Nogf een handige tip/extensie voor VisualStudio voor SharePoint:

http://wspbuilder.codeplex.com/

Deze voegt mooie kant en klare templates toe, en maakt eventueel een webpart setup.
Voor fout boodschappen wat beter weer te geven in sharepoint dien je de volgende 2 aanpassingen te doen in je webconfig (opzoeken en aanpassen):

<SafeMode CallStack="true" />
<customErrors mode="Off" />

zie ook: http://www.sharepointblog...onfig-debug-settings.aspx

[ Voor 12% gewijzigd door Verwijderd op 06-05-2009 13:20 ]


Acties:
  • 0 Henk 'm!

  • Rob1106
  • Registratie: November 2004
  • Laatst online: 22-04-2024
Het moet inderdaad een webpart worden.
Haan schreef op woensdag 06 mei 2009 @ 13:15:
Blijft de vraag hoe de pagina in SharePoint gebruikt gaat worden? Moet het een webpart zijn? -> begin opnieuw, maar dan met een webpart project. De code die je hebt kan je voor het overgrote deel hergebruiken.

Als het gewoon een losse pagina is die in SP getoond wordt, kan je met het huidige project verder werken, maar doe dan wat ik al eerder zei en haal de code naar losse .cs files. De huidige manier werkt alleen voor heel eenvoudige pagina's met een klein beetje code,maar daar ben je zelf nu ook al achter ;)
Dat begreep ik inderdaad ;). het project word in principe een pagina, maar een webpart zou beter zijn denk ik. Ik weet niet of het veel extra werk is om het project te maken als webpart, ons werd namelijk in het begin verteld dat we dit beter niet konden doen omdat er dan veel extra dingen bij kwamen kijken. Nu denk ik dat we er eigenlijk niet omheen kunnen...

Ik had inderdaad ook al even naar smartpart gekeken maar alle links zijn dood dus ik kwam er niet helemaal uit hoe dit dan moest gaan werken.

Core i7 920 | Asus P6T Deluxe V2 | OCZ 6GB | EVGA 260GT 216c | OCZ Vertex 3 60GB | WD vRaptor 150GB | Adaptec 5805 - RAID5: 5,4TB | Lian-Li PC-A7110


Acties:
  • 0 Henk 'm!

Verwijderd

Rob1106 schreef op woensdag 06 mei 2009 @ 13:20:
Het moet inderdaad een webpart worden.
[...]
Dat begreep ik inderdaad ;). het project word in principe een pagina, maar een webpart zou beter zijn denk ik. Ik weet niet of het veel extra werk is om het project te maken als webpart, ons werd namelijk in het begin verteld dat we dit beter niet konden doen omdat er dan veel extra dingen bij kwamen kijken. Nu denk ik dat we er eigenlijk niet omheen kunnen...
Ligt er aan wat je precies wilt, webpart is niet echt zoveel werk op zich.

Als je MOSS draait ipv WSS kan je ook via de BDC je sql databases bevragen, direct of via webservices, is misschien nog een oplossing.

Acties:
  • 0 Henk 'm!

  • Rob1106
  • Registratie: November 2004
  • Laatst online: 22-04-2024
Ik had deze al geïnstalleerd maar had het filmpje die erbij staat niet gezien. Filmpje net bekeken en kom een stuk verder. Enkel na toevoegen smartpart en kiezen van een van de voorbeelden krijg ik de melding:
Error: unable to load ~\/UserControls\AJAXSampleProvider.ascx
Details: Unknown server tag 'asp:UpdatePanel'.

Kun je er uberhaupt wel aspx files mee importeren?? Niet alleen ascx? (Zo te zien niet)
Verwijderd schreef op woensdag 06 mei 2009 @ 13:31:
[...]

Ligt er aan wat je precies wilt, webpart is niet echt zoveel werk op zich.

Als je MOSS draait ipv WSS kan je ook via de BDC je sql databases bevragen, direct of via webservices, is misschien nog een oplossing.
Ik draai idd MOSS. Zal er eens naar kijken.

[ Voor 9% gewijzigd door Rob1106 op 06-05-2009 13:53 ]

Core i7 920 | Asus P6T Deluxe V2 | OCZ 6GB | EVGA 260GT 216c | OCZ Vertex 3 60GB | WD vRaptor 150GB | Adaptec 5805 - RAID5: 5,4TB | Lian-Li PC-A7110


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 17:04

Haan

dotnetter

Je moet nog even de Ajax extensions voor ASP.Net installeren installeren :)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Nu online
Kun je er uberhaupt wel aspx files mee importeren?? Niet alleen ascx? (Zo te zien niet)
Indien je een applicatie pagina wilt binnen SharePoint, kun je je .aspx dumpen in de 12 hive, onder \TEMPLATE\Layouts\ (eventueel een apart map)

ASP.NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ Assembly Name="strongkey van je assembly" %>

<%@ Page Language="VB" MasterPageFile="~/_layouts/application.master" Inherits="verwijzing naar je codebehind" %>

<asp:Content ID="header" runat="server" ContentPlaceHolderID="PlaceHolderAdditionalPageHead">
    <link rel="stylesheet" type="text/css" href="/_layouts/1043/styles/csss.css" />
</asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
</asp:Content>
<asp:Content ID="PageHeader" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea"
    runat="server">
    </asp:Content>
<asp:Content ID="main" runat="server" ContentPlaceHolderID="PlaceHolderMain">
</asp:Content>


Je code behind lijkt dan op:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.WebControls
Imports Microsoft.SharePoint.Utilities

Imports System.Web.Configuration
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace bla
    Public Class x
        Inherits LayoutsPageBase
End Class
End Namespace


Vervolgens genereer je met WSP builder je elements.xml en feature.xml

Je codebehind komt als dll terecht in de GAC, en je aspx en css in de 12 hive

Ook webparts zijn vrij eenvoudig :)

Je webpart kan wel het beste erven van Microsoft.SharePoint.WebPartPages.WebPart (gewone ASP.NET webparts gaan ook, maar dan kun niet zoveel met het SharePoint object model)

[ Voor 12% gewijzigd door asfaloth_arwen op 06-05-2009 14:26 ]

Specs


Acties:
  • 0 Henk 'm!

  • Rob1106
  • Registratie: November 2004
  • Laatst online: 22-04-2024
Haan schreef op woensdag 06 mei 2009 @ 14:05:
Je moet nog even de Ajax extensions voor ASP.Net installeren installeren :)
Hij werkt nu idd. maar dan nog is het alleen voor ascx files en niet aspx. Aspx files werken niet met Smartpart.

Jouw oplossing is ook interessant asfaloth_arwen. Zal er even goed naar kijken...

[ Voor 58% gewijzigd door Rob1106 op 06-05-2009 14:28 ]

Core i7 920 | Asus P6T Deluxe V2 | OCZ 6GB | EVGA 260GT 216c | OCZ Vertex 3 60GB | WD vRaptor 150GB | Adaptec 5805 - RAID5: 5,4TB | Lian-Li PC-A7110


Acties:
  • 0 Henk 'm!

  • Tranzity
  • Registratie: Januari 2001
  • Niet online
asfaloth_arwen schreef op woensdag 06 mei 2009 @ 14:18:
[...]

Je webpart kan wel het beste erven van Microsoft.SharePoint.WebPartPages.WebPart (gewone ASP.NET webparts gaan ook, maar dan kun niet zoveel met het SharePoint object model)
Microsoft.SharePoint.WebPartpages.WebPart is toch WSS2.0?
System.Web.UI.WebControls.WebParts.WebPart is een betere voor MOSS2007.

Acties:
  • 0 Henk 'm!

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Nu online
Tranzity schreef op woensdag 06 mei 2009 @ 15:01:
[...]

Microsoft.SharePoint.WebPartpages.WebPart is toch WSS2.0?
System.Web.UI.WebControls.WebParts.WebPart is een betere voor MOSS2007.
Microsoft.SharePoint.WebPartpages.WebPart is inderdaad backwards compatible met WSS2.0, echter biedt het ook nog een aantal andere voordelen. (Zie A Tale of Two Base Classes voor een opsomming)

System.Web.UI.WebControls.WebParts.WebPart is de gewone ASP.NET webpart class, die dus ook prima buiten SharePoint te gebruiken is. Verder erft Microsoft.SharePoint.WebPartpages.WebPart gewoon van System.Web.UI.WebControls.WebParts.WebPart.

Het is dus heel erg afhankelijk van of je webparts alleen binnen SharePoint gebruikt, en of je de extra opties die Microsoft.SharePoint.WebPartpages.WebPart biedt nodig hebt.

offtopic:
Overigens gebruikt WSP builder bijvoorbeeld standaard Microsoft.SharePoint.WebPartpages.WebPart als base class voor webparts. In mijn projecten kan het meestal met beide classes wel, maar aangezien WSP builder het zo genereerd, en de webparts toch SharePoint only zijn/worden ben ik te lui om het aan te passen :P

Specs


Acties:
  • 0 Henk 'm!

  • Tranzity
  • Registratie: Januari 2001
  • Niet online
Okay, interessant! Bedankt voor de link.
WSPBuilder ben ik vanaf gestapt, een DDF & manifest maken is echt niet zo moeilijk, en juist echte fouten (bijvoorbeeld verwijderen van een feature.xml) komen gelijk naar boven tijdens het Builden. Verder met grotere projecten over meerdere Projects is WSPBuilder helaas niet meer toereikend. De VisualStudio Extensions for WSS 1.2 heeft ook mooie templates voor bijvoorbeeld WebParts.

Acties:
  • 0 Henk 'm!

  • Rob1106
  • Registratie: November 2004
  • Laatst online: 22-04-2024
Kleine update for future reference:

We hebben de 'makkelijke' oplossing gekozen en zijn gegaan voor het gebruik maken van een webpart paginaviewer. In de paginaviewer een link naar de plek waar we de asp.net website hebben draaien.

Voor deze oplossing gekozen omdat we hier geen ondersteuning meer hebben en ik het zelf niet snel genoeg voor elkaar kreeg om een project te maken als sharepoint webpart...

[ Voor 6% gewijzigd door Rob1106 op 20-05-2009 20:06 ]

Core i7 920 | Asus P6T Deluxe V2 | OCZ 6GB | EVGA 260GT 216c | OCZ Vertex 3 60GB | WD vRaptor 150GB | Adaptec 5805 - RAID5: 5,4TB | Lian-Li PC-A7110

Pagina: 1