Monatliche Archive: Februar 2008

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:

Schnell & Einfach: Erstellen Sie einen Ordner und ordnen einen Content-Type (Oder, Haben Sie Ihre KPIs und Essen sie auch)

Um ein KPI-Problem zu umgehen Ich schrieb hier, Ich habe einige Tests und entdeckt, dass KPI Arbeit gegen Ordner mit Meta-Daten auf die gleiche Weise, dass sie gegen Dokumente arbeiten oder Listenelemente. Ich bewies es heraus, indem Sie einen neuen Inhaltstyp erstellen basierend auf den Ordner Content-Type und dann ein paar Felder hinzugefügt. Ich habe einige Indikatoren und bewies mir, die KPIs erwartungsgemäß. Das war die erfreuliche Nachricht. Es ist nicht perfekt, Da die Drilldown-Sie von bekommen ist der KPI gegen die Ordner nicht genau was Sie wollen. Das ist zu viel ein Nachteil in meinem Fall nicht, weil 1) die Endbenutzer nicht besser wissen und 2) die Drill-Down geht in einen Ordner. Klicken sie den Namen des Ordners, und sie sind das Element. Es ist zwei Klicks statt einer, Das ist nicht das Ende der Welt.

Diese flossen schön mit der Arbeit, die ich tat. Ich erstelle einen Ordner für jedes Dokument, die hochgeladen wird. Dies geschieht über einen Ereignisempfänger. Als Folge, Es ist ein Stück Kuchen zu halten die des übergeordneten Ordners Meta-Daten synchron mit den KPI-gesteuerte Meta-Daten aus der Datei selbst, da die Installateure bereits vorhanden ist. This allows me to have my KPI’s and eat them too 🙂

Ich änderte die Ereignissenke, um den Ordner hinzuzufügen, und legen Sie dann diesen neuen Ordner Content-Type auf meine benutzerdefinierten Inhaltstyp KPI-freundliche. Dieses Stück Code hat den trick:

 SPFolderCollection SrcFolders = targetWeb.GetFolder("Dokumente").Unterordner;
  SPFolder AddedFolder = srcFolders.Add(Eigenschaften.ListItem.ID.ToString());
  SPContentTypeId KpiCT = Neu SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content-Type-ID"] = kpiCT;
  addedFolder.Item.Update();

Die eigentliche Inhaltstyp-ID suchen, Ich dieses Inhaltstyps über Websiteeinstellungen abgerufen und kopieren/einfügen es aus der URL wie gezeigt:

Bild

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags: ,

Schnell und einfach: Holen Sie sich die SPFolder ein SPListItem in einen Ereignisempfänger

Ich hasse es zugeben, aber ich kämpfte mit diesem einen Tag. Mein Ereignisempfänger muss ein Feld von seinem übergeordneten Ordner aktualisieren. Das bisschen zeigt wie es:

Privat privatevoid UpdateParentFolder(SPItemEventProperties Eigenschaften)
{

SPFolder ThisItemFolder = Eigenschaften.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ Genehmigungsstatus"] = "Good news, Alle!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

In diesem Fall, Ich arbeite mit einer Dokumentbibliothek und die Eigenschaften kommen aus einem ItemAdded-Ereignis.

Der Trick ist, dass Sie die SPFolder des Elements direkt aus dem Element selbst nicht (dh. Eigenschaften.ListItem.Folder ist null). Stattdessen, das Listenelement zugeordneten Datei gehen Sie und bekommen Sie die Datei Ordner.

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags:

Noch ein weiteres Ereignisempfänger Debuggen Trick

Ich bin sicher, dass ich nicht die erste Person, die mit diesem kommen. Jedoch, Ich habe nicht bemerkt, dass jemand einen Trick, wie dies zu veröffentlichen, da ich begann nahe Aufmerksamkeit auf der Gemeinschaft im Juli. Also, Ich dachte, ich würde es post, diese schnelle und einfache Debug-Tipp.

Ich arbeite gerade an einen Ereignisempfänger, die damit begonnen, diese Fehler in der 12 Bienenkorb:

Fehler beim Laden und Ausführen des Ereignisempfängers Conchango.xyzzyEventReceiver in xyzzy, Version = 1.0.0.0, Kultur = Neutral, PublicKeyToken = Blahbalhbalh. Weitere Informationen finden sich unter. : Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

Ich wusste nicht, wo ich dieser Bug eingeführt hatte, weil ich, zu viele Dinge in einem mein Code/bereitstellen/Test-Zyklen getan hatte.

Ich habe versucht Diese Lösung zu meiner Pdb dort mit der Hoffnung, dass SharePoint erhalten 12 Bienenkorb würde die Stapelüberwachung anzeigen, aber kein Glück. Ich weiß nicht, ob es möglich ist, und wenn jemand tut, Bitte lassen Sie mich wissen 🙂

Ich weiß, dass es möglich ist Schreiben Sie Ihren eigenen Log-Meldungen zu den 12 Bienenkorb. Ehrlich gesagt, Ich wollte etwas ein wenig weniger beängstigend und schneller zu implementieren.

Es fiel mir ein, dass ich zumindest einige grundlegende Ablaufverfolgungsinformationen bekommen konnte, durch Abfangen und Auslösen von generische Ausnahmen wie folgt:

  versuchen {
    UpdateEditionDate(Eigenschaften);
  }
  fangen (Ausnahme e)
  {
    werfen Neu Ausnahme("Dispatcher, UpdateEditionDate(): Ausnahme: [" + e.ToString() + "].");
  }

Dies zeigte sich der 12 auf diese Weise Bienenstock:

Fehler beim Laden und Ausführen des Ereignisempfängers Conchango.xyzzyEventReceiver in xyzzy, Version = 1.0.0.0, Kultur = Neutral, PublicKeyToken = Blahblahblah. Weitere Informationen finden sich unter. : Verteiler, UpdateEditionDate(): Ausnahme: [NullReferenceException-System.: Objektverweis nicht auf eine Instanz eines Objekts festgelegt. bei Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties-Eigenschaften) bei Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties-Eigenschaften, String eventDescription)].

Das gab mir alle Details, die ich brauchte, um dieses besondere Problem aufzuspüren und ich erwarte, dass es geht viel weiter verwenden.

</Ende>

Onnieren Sie meinen Blog ab!