SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Suche Tutorials und Best Practice Richtlinen zum Thema "Featureenwicklung".

Unbeantwortet Dieser Beitrag hat 5 Antworten

Ohne Rang
216 Beiträge
Nachtschelm erstellt 3 Jan. 2012 13:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Community,
ich übe mich derzeit in der Entwickung von Features in Form von EventHandlern in C#. Allerdings sind meine Ergebnisse sehr umständlich und unflexibel, da die Konfiguration hardcoded oder in Listen abgelegt ist. Macht also alles andre als einen professionellen Eindruck... Mein größtes Problem ist, dass ich nicht weiß, wie ich einem Feature eine Application Page mitgeben kann, über die der EventHandler einer oder mehrerern Listen zugewiesen werden kann.

Daher bin ich auf der Suche nach Tutorials, die mir diese Basics der Featureprogrammierung vermitteln können. Vor allem interessiert mich, wie ich die Informationen, die ich mit der Application Page vom User abfrage, an meinen EventHandler weitergeben kann (speichere ich die erhaltenen Werte in versteckten Listen ab oder wie wird nach gängiger Best Practice verfahren?).

Wäre super, wenn Ihr mir den ein oder anderen aufschlussreichen Link oder auch Buchtipps posten könntet :).
Danke!

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Jan. 2012 16:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eine Anleitung, die Dir all das vermittelt, kenne ich nicht. In der Praxis hilft da meist nur Erfahrung...

[quote user="Nachtschelm"]Vor allem interessiert mich, wie ich die Informationen, die ich mit der Application Page vom User abfrage, an meinen EventHandler weitergeben kann [/quote]

Je nachdem, wo man die Einstellungen später braucht, kann man sie in den PropertyBags ablegen, die viele SharePoint-Objekte mitbringen. Es gibt z.B. SPWeb.Properties. Dort kann man auch eigene Einstellungen ablegen (Update nicht vergessen). Bei Listen kann man auf SPList.RootFolder.Properties zurückgreifen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 4 Jan. 2012 17:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,
der Hinweis auf die PropertyBags ist eine wertvolle Info. Da kann ich sicher einiges verstauen.
Falls Du zufällig ein CodePlex-Projekt oder irgendein anderes Beispiel im Netz aus dem Stegreif parat hast, wo ich mir die Implementierung der ApplicationPages angucken könnte, kannst Du ja vllt noch einen Link posten...

Auf jeden Fall schon mal vielen Dank an Dich! :-)

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Jan. 2012 17:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was genau möchtest Du denn machen? Ohne einen Hinweis darauf, kann man schlecht eine Anleitung geben ;-)

In jedem Fall ist es oft hilfreich, wenn man sich die SharePoint-Application Pages anschaut (liegen alle im Layouts-Ordner). Man kann dort viel abschauen was das Design betrifft. Und mit Reflector oder ILSpy auch die Implementierung...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 4 Jan. 2012 17:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,
ich möchte ein Feature implementieren, das Ankündigungen aus den einzelnen Abteilungen (Unterwebsites der gleichen SiteCollection) in eine "globale" Ankündigungenliste kopiert und diese auch synchron hält. Hierfür möchte ich EventHandler verwenden, die nur auf diesen bestimmten Listen sitzen sollen. Um die globale Liste und die Quelllisten bestimmen zu können, wollte ich eine ApplicationPage erstellen, die eine Art "ListPicker" beinhaltet. So wäre es recht einfach, Listen hinzuzufügen oder zu entfernen.
Die ApplicationPage soll erscheinen, sobald das SiteCollection-Feature aktiviert wird. Zusätzlich möchte ich in den Websiteeinstellungen der Website auf der höchsten Ebene unter Websitesammlungsverwaltung einen Hyperlink auf diese ApplicationPage hinzufügen.

Solange sich die Umsetzung in einfachem C#-Code bewegt, komme ich zurecht. Also EventReceiver schreiben und ListItems rumjonglieren klappt recht passabel. Zum einen habe ich jedoch Probleme, wenn ich Ressourcen-Files für die Mehrsprachigkeit einbinden möchte, was aber eher ein sekundäres Problem ist. Viel interessanter ist, wie ich eine ApplicationPage in meine Lösung integrieren kann, über die ich dann die Quelllisten und die globale Ankündigungenliste definieren kann. Ich habe bereits ein paar Beispiele zur Hand, wie man ApplicationPages in den SharePoint einbringt. Allerdings stehen diese Pages immer nur für sich alleine und machen auch nicht mehr, als einen sinnlosen Demobutton zu beherbergen.
Ich weiß leider nicht, wie:

  • ich die ApplicationPage nach Aktivieren des Features auf den Schirm bekomme
  • ich die über die ApplicationPage gesammelten Informationen konservieren kann, um sie den EventReceivern zur Verfügung zustellen
    (die von Dir erwähnten Propertybags würden hier wohl Abhilfe schaffen)
  • ich die elements.xml für den Hyperlink auf die ApplicationPage so gestalte, dass die Ziel-URL des Hyperlinks nicht hardcoded in der elements.xml liegt, sondern erst nach dem Deployen der ApplicationPage gesetzt wird (quasi <UrlAction Url="NewsSpreaderConfigPage.Url"/>), um das Projekt so generisch wie möglich zu halten.

    ...um nur ein paar meiner offenen Flanken zu nennen.. :D

 

Reflector und ILSpy kenne ich bisher nicht, ich verwende ausschließlich VS2010 (weil ich es nicht besser weiß ;-)). Ich werde mich mal an die beiden Werkzeuge machen, damit ich sie kennenlerne und uach deren Potential nutzen kann :-)

Vielen Dank für die Tipps :-)

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Jan. 2012 15:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Puh, lange Frage erfordert lange Antwort ;-)

Zunächst mal vorweg: wie wäre es stattdessen ein Webpart zu entwickeln, daß einfach alle Ankündigungen zusammensammelt und in einem SPGridView darstellt? Das sollte sich mit einer SPSiteDataQuery relativ leicht verwirklichen lassen. Wenn Du SharePoint Server hast, kannst Du auch gleich das Content Query Webpart verwenden, das macht auch nichts anderes.

Für die aspx-Datei für die Seite legst Du in VS einen SharePoint Mapped Folder (Rechtsklick auf das Projekt) an. Damit wird die Datei beim Bereitstellen automatisch ins Layouts-Verzeichnis kopiert. Besser ist Du legst dort einen eigenen Unterordner an. Mit derselben Methode der Mapped Folder bekommst Du auch resx-Dateien in den Resources-Folder (für die Mehrsprachigkeit).

Dem Feature fügst Du ein "Empty Eelement" hinzu und in dessen elemenst.xml eine CustomAction. Mit CustomActions kann man Links in die SharePoint-Oberfläche einbauen, wie z.B. ins Websiteaktionen-Menü und auch an die von Dir gewünschte Stelle. Wenn dann das Feature aktiviert wird, wird ein Link auf Deine Seite sichtbar.

Zum Speichern der Einstellungen bietet sich bei Dir SPContext.Current.Site.RootWeb.Properties an.

Mit Reflector und ILSpy kann man sich den Quellcode einer kompilierten .NET-Assembly anschauen, also z.B. auch das, was Microsoft innerhalb der Microsoft.SharePoint.dll gemacht hat. Reflector gibt es nicht mehr kostenlos - ILSpy aber schon.

Ich hoffe, ich konnte Dir damit ein paar Denkanstöße und die richtigen Suchworte für Google liefern. Ansonsten einfach nochmal nachfragen.

Viele Grüße
Andi
af @ evocom de
Blog