Schnell und einfach: Bereitstellen einer Website mithilfe von SharePoint-Objektmodell In c#

Ich habe versucht, auf der Suche nach ein wenig Code Schnipsel, die zeigen würde, wie ich eine neue SPWeb in einer Websitesammlung erstellen können. Ich fand es als schnell oder leicht, wie ich erwartet hatte, so ich dachte, ich würde zusammen schlagen, einen kleinen Eintrag zu diesem Thema.

Dieser Code erstellt eine neue Wiki-Website:

 SPSite siteCollection;

    SiteCollection = Neu SPSite("http://Conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "Xyzzy Titel",
        "Xyzzy Beschreibung", 1033, SPWebTemplate.WebTemplateWIKI, falsch, falsch);

Meine anfängliche Suche ist fehlgeschlagen, weil ich war auf der Suche nach Phrasen wie "einer Website mithilfe von Sharepoint-Objektmodell bereitstellen" und dergleichen.

Wenn Sie Suche für "Webs.Add()", Hier finden Sie eine Reihe von sehr nützlich Blog-Einträge, SDK-Dokumentation, die zu diesem Thema in die Tiefe gehen und MSDN-Artikeln. Ich empfehle auf jeden Fall Diese Seite.

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

Integrieren von SharePoint Designer-Workflows mit Webservices

Ich habe mit benutzerdefinierten Aktionen für SharePoint Designer für einige Zeit spielen rund um (siehe hier für einige detaillierte Sachen, Wenn Sie interessiert).

In meinem aktuellen Projekt, Wir tun einige ziemlich schweres Heben müssen und wollen wir deklarativen SPD Workflow verwenden, um die entsprechenden Geschäftsprozess zu verwalten.

Lange Rede, kurzer Sinn, Dies ist durchaus möglich. Ich erweiterte meine Codeplex-Projekt zum Hilfsdienst"aufrufen" und jetzt können wir direkt von einem SPD-Workflow einen Webdienst aufrufen.

Hier ist die Signatur:

 öffentliche Zeichenfolge Verteiler(
        GUID WebID, // Übergeben von der Laufzeitumgebung
        GUID SiteID, // Übergeben von der Laufzeitumgebung
        Zeichenfolge ListID, // Der RTE übergebener (weiß nicht, warum das eine Zeichenfolge ist, keine GUID)
        int ListItemID, // Der RTE übergebener.
        Zeichenfolge XmlMessage) // Vom Benutzer im SPD übergeben.

Dies nutzt die Tatsache, die wir an wichtigen Workflow-Informationen erhalten können, wie die Website, Listen-ID, usw.. Dies wird auch an mehreren Stellen für die von Ihnen beim Erstellen Ihrer eigenen benutzerdefinierten Aktionen interessierte dokumentiert. Die Idee ist, die XML-Zeichenfolge zu extrahieren, wie seitens des Nutzers, ein geeignetes Verfahren zu versenden. Witziges!

Leider, Dies ist natürlich eine einfache Fahrkarte nach unten zu "Goosey Loosey" Anti-Pattern-land, but it’s better than hitting a brick wall 🙂

Ist es ein Anti-Pattern, wenn Sie es tun, obwohl Sie wissen, dass es ein Anti-Pattern ist?

Ich hoffe, dass dies in naher Zukunft innerhalb Codeplex umbrechen. Wenn Sie mich dabei interessiert sind, Gib mir Sack (E-Mail oder einen Kommentar hinterlassen) and I’ll be that more enthusiastic about doing it 🙂

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags: ,

Sonntag Funny: “Ich frage mich, ob Ihr Passwort ist …”

Ich kaufte vor kurzem Mittagessen für meinen Bruder (wie üblich) und wir reden über lustige Dinge, die wir an unsere jeweiligen Hochschulen landeten. An meine Alma mater, Lafayette College, die akademische Unterstützung IT-Abteilung hatte eine sehr umfassende Weise darüber. Wir bekamen viel Seil und ich nutzte, die in Zeiten.

Zwei beziehen sich meine Lieblings Erinnerungen an meinen guten Freund, Gabe. Er hatte den schrecklichen Fehler gemacht, sagen jedoch Menschen, die "Ich ein Neuling bin", aber ich habe Sophomore stehend" aufgrund der verschiedenen erweiterte Platzierung-Klassen, die er gemacht hatte, usw.. Viele von uns waren ähnlich aufgestellt, aber wir haben nicht so viel darüber reden. Seinem Abschlussjahr, Wenn wir ihn zu Menschen eingeführt, Wir würden sagen "dieser ist Gabe. Er ist Senior, aber er hat Sophomore stehend ".

Das Kollegium hatte einige Sun Workstation/Server, die mit X-Window. Sie hatten riesige Monitore und die Ingenieure nutzte sie für CAD und andere langweilige Sachen engineer. Wir CS Menschen benutzt sie, um Programmieren zu lernen und, Natürlich, Spiele spielen.

Wir nicht, wie die Computer-hilflose Ingenieure zu viel so eines unserer Lieblings-Dinge zu tun, Telnet auf die Box sie wäre waren auf und führen X-Auge auf Ihnen. Dies würde ein paar Augen pop-up, die die Maus auf dem Bildschirm, um gefolgt. Sie konnte noch mehr pop und haben buchstäblich ein Dutzend oder mehrere X-Auge-Anwendungen ausführen. Try not to laugh out loud when a hapless engineer is trying to close X-eye after X-eye and muttering under his breath about it 🙂

Wir spielten auch X-Trek auf diese Boxen. Zu tun, musstest du den Quellcode herunterladen, verschiedenen Abhängigkeiten zu erhalten, wo Sie sie finden und es bauen konnte. Ich war kein anspruchsvoller C-Programmierer, aber ich konnte die Header-Dateien lesen. Ich war auf der Suche durch diese und fand Richtlinien wie "#DEFINE MAX_TORPEDO_DISTANCE 10". Ich spielte mit, die Phasen und Torpedos Reichweite und Leistung erhöhen, neu gebaut und dann zerstört Gabe das nächste Mal gespielt.

Gabe war auch ein großer Fan der TV-Show namens Blakes 7. Ich hatte es noch nie gesehen, aber das nicht hindern mich darauf dass Dr.. Wer ist die überragende Show. The arguments would get heated at times 🙂

Eines Tages, Es fiel mir ein, dass ich wahrscheinlich sein UNIX-Passwort erraten konnte. Ich setzte mich neben ihm eines Tages und in einem lauten Ton angekündigt, "Ich werde jetzt Ihr Kennwort zu erraten, Gabe." "Ja, rechts" seine Antwort war. Ich dann eingeloggt, seine Benutzer-Id eingegeben, wandte sich ihm stellen, eingegeben und sagte laut, "Ich frage mich ob es B-L-A-K-E-7 ist" ? Note hat nie gelohnt so schön, wie es an diesem Tag getan hat.

Nächste Woche (oder in Kürze): Weitere Computer Zimmer Possen College.

Haben Sie irgendwelche zu teilen? Schreibe einen Kommentar oder e-Mail mir und ich werde sie hier veröffentlichen.

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

Kleinere öffentliche Bekanntmachung: Windows Live Sicherheitseinstellungen und Kontaktaufnahme mit Raum-Eigentümer

Ich erhalte einer Handvoll Nachrichten von Personen über den integrierten "eine Nachricht senden" Funktion Microsoft bietet mit live spaces (die Gastgeber auch mein blog) jeden Monat.

Etwa ein Drittel der Zeit, Diese Benutzer haben ihre live Spaces Konto gesichert, so dass ich kann nicht Antworten. Dies ist eine Art von Anti-Spam-Funktion, die ich übernehmen.

</Ende>

Einfache Erklärung: “Wert fällt nicht innerhalb des erwarteten Bereichs.”

UPDATE: Eine anonyme Poster liess eine große Bemerkung über interne Namen. Achten Sie darauf, es zu lesen.

Beim Arbeiten mit Ereignisempfänger und anderen Code, SharePoint-Listenelemente über das Objektmodell verweist, Ich mache oft Fehler, die diesen Fehler zur Laufzeit generieren:

Fehler beim Laden und Ausführen des Ereignisempfängers Conchango.xyzzyEventReceiver in xyzzy, Version = 1.0.0.0, Kultur = Neutral, PublicKeyToken = 0dc50a750396c3ac. Weitere Informationen finden sich unter. : Wert fällt nicht innerhalb des erwarteten Bereichs.

Ich denke, dass dies ein ziemlich allgemeiner Fehler ist, der potenziell viele verschiedene Arten verursacht wird. Jedoch, eine einfache Erklärung ist, dass ich falsch auf ein Feld verweisen bin. Wenn der Name im Feld "Fälligkeitsdatum", Ich muss es wie folgt in einen Ereignisempfänger verweisen:

Eigenschaften.ListItem["Due Date"]

Wenn ich falsch schreiben oder die falsche Schreibweise zu verwenden, wenn Sie auf das Feld verweisen, SharePoint generiert die oben erwähnte Laufzeitfehler. Zum Beispiel, Das ist falsch:

Eigenschaften.ListItem["due Date"]

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

End-User-Tipp: Art Ansichten in einem Dokumentbibliothek, Liste, usw..

Wir können, Erstellen Sie viele Ansichten in SharePoint-Listen und sollte (Dokumentbibliotheken, Benutzerdefinierte Listen, usw.). SharePoint-Listen immer verfügbare Ansichten in alphabetischer Reihenfolge. Wir können dies nicht ändern, out-of-Box-Funktionalität. Wenn sie über Anpassung erfolgt werden kann (und ich bin nicht sicher, es kann), Es ist viel zu technisch für Ihre typische Endbenutzer.

Möchten Sie die Reihenfolge in welcher SharePoint Steuern listet verfügbare Ansichten, Stellen Sie einfach eine Zahl oder ein Brief an den Ansichtsnamen, wie in:

1 – Von Materialart
2 – Alle Dokumente
3 – Fälligkeitsdatum

-oder-

A – Von Materialart
B – Alle Dokumente
C – Fälligkeitsdatum

Ich habe auch Ansichten erstellt deren streng einen KPI feed soll. Ich habe folgende Namenskonvention:

Z_KPI_[Beschreibung]

Das führt dazu, dass meine "KPI" Ansichten am unteren Rand der Liste angezeigt werden.

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags: ,

Sonntag Funny: “Als ich ein kleiner Junge war”

Als Eltern, irgendwo entlang der Linie entdeckte ich die "Wenn ich war ein kleiner Junge" Trick.

Mein Sohn, wahrscheinlich vier oder fünf zum Zeitpunkt, spielte einen Ballon und wie die meisten jungen, die mit Luftballons spielen, er knallte es. Er war sehr aufgeregt. Die Welt hatte zu einem Ende kommen.. Ich sagte zu ihm, "als ich klein war, Ich hatte einen Ballon und es knallte und schließlich, Ich habe einen neuen Ballon." Es schien zu helfen, ihn mit seinen Verlust fertig zu werden und führte zu eine lustige reden, was es war, als ich ein kleiner Junge war.

Jene wirkten nun wie eine Trost-Technik und ich es ein paar Mal im nächsten Zeitraum verwendet. Ich einmal in Schwierigkeiten geraten wenn seine Monster Rancher 3 Kreatur — starb. Ich sprach darüber, wie mein Hund, Prinz, war bei einem Autounfall gestorben.. Dieses Mal, seine Antwort war, "Jetzt fühle ich mich schlecht über zwei Dinge!" Ich scheute die "war als ich ein kleiner Junge mit" Technik zum Trost danach.

Vor dem toten Hund-Zwischenfall, jedoch, Ich hatte auch begonnen, die Technik zu verwenden, um ihn zu Aufgaben tun überzeugen. "Als ich ein kleiner Junge war, Ich musste gehen und erhalten die Zeitung", "mein Zimmer sauber", "bekommen Sie Mami ihre Kaffeetasse", usw..

Das war auch ziemlich erfolgreich für eine Weile, aber er begann zunehmend rebellieren gegen die Tyrannei der meiner Kindheit. Ein Ereignis, insbesondere, markierte das Ende. Ich sagte ihm, die Mülltonnen vom Bordstein zurück in die Werkstatt bringen. Er argumentierte und ich antwortete, "Als ich ein kleiner Junge war, Ich musste den Müll zurück in die Werkstatt bringen." Er reagierte, "Oh ja! Gut, wenn Sie waren ein kleiner Junge, Das war dumm!".

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

Sichten und Spalten in Listen und Dokumentbibliotheken können nicht gesichert werden

UPDATE (02/29/08): Dieses neue Codeplex-Projekt scheint eine Methode zum Sichern von einzelne Spalten bereitstellen: http://www.codeplex.com/SPListDisplaySetting. Wenn Sie Erfahrung in der Arbeit mit ihm haben, Bitte terlassen Sie einen Kommentar hin.

Forum Poster Frage häufig eine wie diese: "Ich habe eine Manager-Ansicht und und eine Personal-Ansicht einer Liste. Wie ich sichern die Manager-Ansicht so dass Personal nicht verwenden kann?"

Sie Fragen häufig auch eine Frage: "Ich möchte eine bestimmten Metadaten-Spalte zu sichern, sodass nur Manager dieser Spalte bearbeiten können, während andere es nicht selbst sehen können."

Diese Antworten gelten für beide WSS 3.0 und Moos:

  • SharePoint bietet Out-of-Box keinen Support für die Sicherung von Ansichten.
  • SharePoint bietet keine Out-of-Box-Unterstützung für Sicherheit Spalten.

Es gibt verschiedene Techniken ein folgen können, um diese Art von Sicherheitsanforderungen zu erfüllen. Hier ist was ich denken kann:

  • Verwenden von vordefinierten Sicherheit auf Elementebene. Ansichten zu Ehren immer Artikelkonfiguration Sicherheitsstufe. Ereignisempfänger und/oder Workflow kann Sicherheit Aufgaben automatisieren..
  • Verwenden Sie persönliche Ansichten, für "Privileg" Ansichten. Dies sind einfach einzurichten. Jedoch, aufgrund ihrer "persönlichen" Natur, Diese müssen für jeden Benutzer konfiguriert werden. Verwenden Sie Standardsicherheit-Konfiguration, um zu verhindern, dass jemand eine persönliche Ansicht erstellen.
  • Verwenden Sie eine Datenansicht-Webpart und implementieren Sie eine Art AJAXy-Sicherheitslösung trimmen.
  • Roll Ihre eigene Liste Display-Funktionalität und aus Sicherheitsgründen auf Spaltenebene zu integrieren.
  • Ändern Sie die Dateneingabeformulare und verwenden Sie JavaScript in Verbindung mit dem Sicherheitsmodell auf Spaltenebene aus Sicherheitsgründen zu implementieren.
  • Verwenden Sie ein InfoPath-Formular für die Dateneingabe. Umsetzung auf Spaltenebene aus Sicherheitsgründen per Web Service-Aufrufe zu SharePoint und bedingt verstecken Felder nach Bedarf.
  • Rollen Sie Ihrer eigenen ASP.NET Daten Eintrag Funktion, die Spalte Ebene aus Sicherheitsgründen implementiert.

Keine dieser Optionen sind wirklich so toll, aber es gibt mindestens ein Pfad zu folgen, wenn Sie, um benötigen, auch wenn es schwer ist.

HINWEIS: Wenn Sie diese Wege gehen, vergessen Sie nicht über "Aktionen-> Mit Windows_explorer öffnen". Sie wollen sicher sein, dass Sie mit diesem Feature um sicherzustellen, dass es nicht als eine "Hintertür funktioniert testen" und besiegen Ihre Sicherheitsschema.

Haben Sie andere Ideen oder Erfahrungen mit Spalten oder Sichten sichern, Bitte mailen Sie mir oder einen Kommentar hinterlassen und ich werde diesen Beitrag gegebenenfalls aktualisieren.

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

Quick-Tipp: BDC ADF Versionsnummern sind dein Freund

Wenn Sie Hand-ADF Codierung sind Dateien und tun eine Menge Code, Import, Testzyklen, Verwenden Sie die Versionsnummer, um Ihr Leben einfacher machen.

Ich hasse es zugeben, aber bis diese Woche, Ich war immer den ADF löschen und Re-Import. Dies würde brechen meine Geschäftsdatenspalten und mich ihnen wieder Draht. Alle unnötigen.

Diese Datei unter "ist es offensichtlich wenn Sie es sehen".

Beispiel:

<LobSystem-Objekt
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://Schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Typ="WebService" Version="1.2.0.0" Name="xyzzyDocumentReview" xmlns="http://Schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Ändern Sie die Version und Re-Import und die vorhandenen Geschäftsdatenspalte verwendet die aktualisierte Version automatisch ohne zusätzliche Konfiguration erforderlich.

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

Lösung: BDC-Picker zeigt nur eine Spalte der Ergebnisse

In meine laufenden Versuche, zu einer Weitere nützliche Nachschlagefeld mit BDC, Ich schlug eine Wand mit dem BDC-picker. Wenn Sie noch nicht zu sehen, der BDC-Picker ist ein Personenauswahl ähnlich, außer dass es mit Spalten vom Typ "Geschäftsdaten funktioniert".

Sie zugreifen im Farbwähler, indem Sie auf das Buch-Symbol für eine Geschäftsdatenspalte wie gezeigt:

Bild

Das Bild oben zeigt eine Geschäftsdatenspalte namens "Master-Dokument-Id". Diese Spalte ist verbunden, über BDC, an einen Webdienst. Der Webdienst gibt zwei Spalten mit Informationen zurück.: Dokument-ID und Titel. Das Geschäft hier soll ein "dieses Dokument basiert auf" Funktion. Benutzer wählen Sie einen "master" Dokument und wenn sie sparen, Ein Ereignisempfänger kopiert Meta-Datenfelder aus der referenzierten master.

Standardmäßig, der BDC-Picker sieht folgendermaßen aus, wenn ich für ein Dokument mit der ID Suche = "38":

clip_image002

Das ist hilfreich, aber nicht gut genug. Menschen denken nicht in Bezug auf IDs, Sie denken in Bezug auf Titel und/oder andere Metadaten. Im Farbwähler können Sie auf andere Spalten suchen (zB. Titel) aber nicht die tatsächliche Liste der Titel angezeigt, die es gefunden, nur ihre DocId's, wie hier gezeigt:

clip_image002[1]

(Der Screenshot ist nicht so groß, weil ich nicht wählen Sie eine Suche, die keine gültige Ergebnisse zurückgibt, aber Sie können sehen, wenn es hatte einige Ergebnisse gefunden, Es hätte nur die DocId gezeigt, keine Titel).

Ich suchte Ebbe und die Antwort darauf und fehlgeschlagen. Mein Kollege, die ehrwürdigen Jonathan Bradshaw, konfrontiert und dieses Problem gelöst hatte. Wenn ich streckte ihm um Hilfe, Er wies mich in die richtige Richtung.

Konfigurieren Sie die Datumsauswahl an mehrere Spalten über die "ShowInPicker" Eigenschaft in der ADF:

<Eigenschaft Name="ShowInPicker" Typ="System.Boolean">wahr</Eigenschaft>

Im detail:

  <!-- Titel -->
  <TypeDescriptor TypeName="System.String" Name="Titel" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titel</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Eigenschaften>
      <Eigenschaft Name="DisplayByDefault" Typ="System.Boolean">wahr</Eigenschaft>
      <Eigenschaft Name="ShowInPicker" Typ="System.Boolean">wahr</Eigenschaft>
    </Eigenschaften>
  </TypeDescriptor>

Durch Festlegen dieser Eigenschaft ein kleineres Problem führt ein. Sobald Sie es einmal festgelegt, Sie müssen für jede Spalte festlegen, die Sie anzeigen möchten.. In meinem Fall, BDC-Farbwähler zeigte DocId standardmäßig. Jedoch, Nachdem ich "ShowInPicker hinzugefügt" Titel, DocId nicht mehr angezeigt. Ich löste, die indem Sie die ShowInPicker-Eigenschaft explizit für Doc-ID.

Hier ist das Ergebnis:

Bild

(Ich erkläre die seltsam "168 – CamlSchema.xsd" Bau in einem zukünftigen Blog-post. Kurz gesagt, Es ist eine verkettete Zeichenfolge, die eine etwas bessere Benutzererfahrung ermöglicht).

Natürlich, dieser Blog-Eintrag geschrieben, Ich habe gerade eine Suche nach "ShowInPicker" und zahlreiche Treffer gefunden, einschließlich dieser: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Es erklärt die Bedeutung der Eigenschaft zusammen mit einigen anderen guten BDC-Sachen.

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags: