Archives mensuelles: Février 2008

Annonce publique mineur: Contacter espace propriétaires et les paramètres de sécurité de Live de Windows

Je reçois quelques messages de particuliers via la fonction intégrée "Envoyer un message" fonction Microsoft fournit avec espaces vivants (qui héberge aussi mon blog) tous les mois.

Environ un tiers du temps, Ces utilisateurs ont trouvé leur compte live espaces tels que je ne peux pas répondre. Il s'agit d'une sorte de fonction anti-spam que je suppose.

</fin>

Explication simple: “Valeur ne relève pas de la plage attendue.”

MISE À JOUR: Une affiche anonyme a laissé un grand commentaire sur les noms internes. N'oubliez pas de le lire.

Lorsque vous travaillez avec les récepteurs d'événements et autre code qui fait référence à des éléments de liste SharePoint via le modèle objet, Je fais souvent des erreurs qui génèrent cette erreur lors de l'exécution:

Erreur lors du chargement et l'exécution de récepteur d'événements Conchango.xyzzyEventReceiver dans xyzzy, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 0dc50a750396c3ac. Des renseignements supplémentaires sont ci-dessous. : Valeur ne relève pas de la plage.

Je pense qu'il s'agit d'une erreur générique qui est potentiellement causée de différentes manières. Cependant, une explication simple, c'est que je suis référençant un champ mal. Si le nom du champ est « Échéance », Je dois le référencer comme ceci dans un récepteur d'événements:

propriétés.ListItem[« Date d'échéance »]

Quand je mal orthographié ou utiliser le mauvais cas lorsque vous référencez le champ, SharePoint génère le ci-dessus mentionné erreur d'exécution. Par exemple, Cela est erroné:

propriétés.ListItem[« Date d'échéance »]

</fin>

S'abonner à mon blog.

Tags Technorati:

Astuce rapide d'utilisateur final: Vues de la sorte dans une bibliothèque de documents, Liste, etc..

Nous pouvons, devrait et créent de nombreuses vues dans les listes SharePoint (bibliothèques de documents, listes personnalisées, etc.). Les listes SharePoint toujours vues disponibles par ordre alphabétique. Nous ne pouvons pas changer cela à l'aide de la fonctionnalité de boîte. Si cela peut être fait par l'intermédiaire de personnalisation (et je ne suis pas sûr que cela peut), C'est beaucoup de technique pour votre utilisateur typique de la fin.

Si vous souhaitez contrôler l'ordre dans lequel SharePoint répertorie les vues disponibles, ajouter simplement un nombre ou une lettre pour le nom de la vue, comme dans:

1 – Par Type de matériau
2 – Tous les Documents
3 – Date d'échéance

-ou-

A – Par Type de matériau
B – Tous les Documents
C – Date d'échéance

J'ai également créé vues dont le but est strictement pour nourrir un KPI. J'ai suivi cette convention de nommage:

Z_KPI_[Description]

Que provoque mon IRC"" vues d'apparaître au bas de la liste.

</fin>

S'abonner à mon blog.

Drôle de dimanche: “Quand j'étais un petit garçon”

En tant que parent, quelque part le long de la ligne, j'ai découvert le "quand j'étais un petit garçon" Astuce.

Mon fils, probablement quatre ou cinq à la fois, jouait un ballon et aime plus petits garçons qui jouent avec des ballons, il surgit il. Il était très en colère. Le monde a pris fin. Je lui ai dit, "quand j'étais petit garçon, J'ai eu un ballon et elle est apparue et, éventuellement,, J'ai eu un nouveau ballon." Il semblait pour l'aider à faire face à sa perte et a conduit à un plaisir parler de comment c'était quand j'étais un petit garçon.

Qui travaille bien comme une technique de consolation et j'ai utilisé un plusieurs fois au cours de la prochaine période de temps. J'ai eu des problèmes une fois lorsque son Monster Rancher 3 mort de la créature. J'ai parlé de comment mon chien, Prince, était mort dans un accident de voiture. Cette heure, sa réponse a été, "Maintenant je me sens mal deux choses!" J'ai hésité à utiliser la "quand j'étais un petit garçon" technique pour consolation après cela.

Avant l'incident de chien mort, Cependant, J'avais aussi commencé à utiliser la technique du pour convaincre de faire des corvées. "Quand j'étais un petit garçon, J'ai dû sortir et obtenir le journal », « nettoyer ma chambre », « obtenir la maman sa tasse de café », etc..

C'était trop joli succès pendant un certain temps, mais il a commencé de plus en plus se rebeller contre la tyrannie de mon enfance. Un événement, en particulier, marqua la fin. Je lui ai dit de ramener les poubelles de bordure dans le garage. Il a soutenu et j'ai répondu, "Quand j'étais un petit garçon, J'ai dû reprendre les ordures au garage." Il m'a répondu, "Oh oui! Eh bien, quand tu étais un petit garçon, C'est stupide!".

</fin>

S'abonner à mon blog.

Tags Technorati:

Colonnes des listes et des bibliothèques de documents et vues ne peut pas être garantis

MISE À JOUR (02/29/08): Ce nouveau projet codeplex semble fournir une méthode de fixation des colonnes individuelles: http://www.codeplex.com/SPListDisplaySetting. Si vous avez aucune expérience de travail avec elle, Veuillez laisser un commentaire.

Affiches Forum souvent poser une question comme ça: "J'ai une vision gestionnaire et et un affichage personnel d'une liste. Comment est-ce que j'ai sécuriser la vue gestionnaire afin que le personnel ne peut pas l'utiliser?"

Ils demandent aussi souvent une question connexe: "Je veux obtenir une colonne de métadonnées spécifiques afin que seuls les gestionnaires peuvent modifier cette colonne tandis que d'autres ne peuvent même pas le voir."

Ces réponses s'appliquent à ces deux WSS 3.0 et point de riz:

  • SharePoint ne fournit pas de soutien d'out-of-the-box pour obtenir des vues.
  • SharePoint ne fournit pas de soutien d'out-of-the-box pour les colonnes de sécurité.

Il existe plusieurs techniques un peuvent suivre pour répondre à ce genre d'exigences de sécurité. Voici ce que je peux penser:

  • Utilisez la sécurité au niveau élément out-of-the-box. Vues honorent toujours la configuration de la sécurité au niveau élément. Récepteurs d'événements ou de flux de travail peut automatiser la cession de sécurité.
  • L'utilisation de vues personnelles pour « le privilège" Affichage. Celles-ci sont assez faciles à mettre en place. Cependant, en raison de leur personnel"" nature, ceux-ci doivent être configurés pour chaque utilisateur. Utilisez la configuration de sécurité standard pour empêcher quiconque de créer une vision personnelle.
  • Utiliser un composant WebPart Affichage de données et de mettre en place une sorte de solution de sécurité AJAXy parage.
  • Rouler vos propres fonctionnalités d'affichage de liste et incorporer l'ajustement de la sécurité au niveau de la colonne.
  • Modifier les formulaires de saisie de données et utiliser JavaScript avec le modèle de sécurité à mettre en œuvre de la suppression de la sécurité au niveau des colonnes.
  • Utiliser un formulaire InfoPath pour saisie de données. Mise en œuvre de la suppression de la sécurité au niveau des colonnes via des appels de service web SharePoint et conditionnellement masquer champs selon les besoins.
  • Rouler votre propre fonction d'entrée de données ASP.NET qui implémente le filtrage de sécurité niveau de colonne.

Aucune de ces options sont vraiment terrible, mais il n'y a au moins une voie à suivre si vous devez, même si c'est dur.

NOTE: Si vous descendez un de ces chemins, n'oubliez pas "Actions-> Ouvrir avec l'Explorateur Windows". Vous voulez être sûr que vous testiez avec cette fonctionnalité pour vous assurer que cela ne fonctionne pas comme une « porte dérobée" et vaincre votre régime de sécurité.

Si vous avez d'autres idées ou expériences avec sécurisation des colonnes ou des vues, s'il vous plaît Ecrivez-moi ou laissez un commentaire et je vais mettre à jour de cette annonce, le cas échéant.

</fin>

S'abonner à mon blog.

Tags Technorati:

Astuce rapide: Les numéros de Version ADF BDC sont votre ami

Si vous êtes codage manuel ADF fichiers et fait beaucoup de cycles d'essai/importation/code, Utilisez le numéro de version pour rendre votre vie plus facile.

Je déteste l'admettre, mais jusqu'à cette semaine, J'étais toujours supprimant l'ADF et réimportant. Ce serait briser mes colonnes de données d'entreprise et faites-moi recâbler les. Tous les inutiles.

Ce fichier sous « il est évident, une fois que vous le voyez ».

Exemple:

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

Modifier cette version et ré-importer et la colonne de données entreprise existante utilise la version mise à jour automatiquement avec aucune configuration supplémentaire n'est requise.

</fin>

S'abonner à mon blog.

Tags Technorati:

Solution: Sélecteur de BDC ne montre qu'une colonne de résultats

Dans mes tentatives continue à fournir une colonne de recherche plus utile à l'aide de la BDC, J'ai frappé un mur avec le sélecteur de BDC. Si vous n'avez pas le voir, le sélecteur de BDC est semblable à un sélecteur de personnes sauf qu'elle fonctionne avec les colonnes de type « données entreprises ».

Vous accéder au sélecteur en cliquant sur l'icône du livre ouvert d'une colonne de données d'entreprise comme le montre:

image

L'image ci-dessus montre une colonne de données d'entreprise appelée « Master Document Id ». Cette colonne est connectée, par l'intermédiaire de BDC, à un service web. Le service web retourne deux colonnes d'informations: Titre et l'ID de document. L'entreprise ici vise à fournir un "ce document est basé sur" fonction. Les utilisateurs sélectionner un maître"" document et quand ils économisent, un récepteur d'événements copie des champs de données meta du maître référencé.

Par défaut, le sélecteur de BDC ressemble à ceci lorsqu'une recherche pour un document dont l'ID = « 38 »:

clip_image002

C'est utile, mais pas assez bon. Les gens ne pense pas qu'en ce qui concerne les IDs, ils pensent en termes de titres et/ou d'autres données meta. Le sélecteur permet d'effectuer des recherches sur les autres colonnes (e.g. Titre) mais ne montrent la liste réelle des titres qu'on trouvé, juste leur DocId s comme indiqué ici:

clip_image002[1]

(La capture d'écran n'est pas si grande parce que je n'avait pas choisir une recherche qui renvoie des résultats valides, mais vous pouvez voir que si on avait trouvé des résultats, Il aurait seulement montré de DocId, pas de titres).

J'ai cherché haut et bas pour la réponse à cela et n'a pas. Mon collègue, le vénérable Jonathan Bradshaw, a face et résolu ce problème. Quand j'ai tendu la main à lui de l'aide, Il m'a fait dans la bonne direction.

Configurer le sélecteur pour afficher plusieurs colonnes par l'intermédiaire de la ShowInPicker »" propriété dans le fichier ADF:

<Propriété Nom="ShowInPicker" Type="System.Boolean">True</Propriété>

Plus de détails:

  <!-- Titre -->
  <TypeDescriptor TypeName="System.String" Nom="Titre" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titre</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Propriétés>
      <Propriété Nom="DisplayByDefault" Type="System.Boolean">True</Propriété>
      <Propriété Nom="ShowInPicker" Type="System.Boolean">True</Propriété>
    </Propriétés>
  </TypeDescriptor>

Définition de cette propriété introduit un problème mineur. Dès que vous le réglez une fois, vous devez définir pour chaque colonne à afficher. Dans mon cas, Sélecteur de BDC a montré DocId par défaut. Cependant, une fois que j'ai ajouté « ShowInPicker" à titre, DocId ne s'affichée plus. J'ai résolu qu'en définissant explicitement la propriété ShowInPicker pour Doc ID.

Voici le résultat:

image

(J'expliquerai le riche » 168 – CamlSchema.xsd" construction dans un post de blog à venir. En bref, C'est une chaîne concaténée qui permet une légèrement meilleure expérience utilisateur).

Bien sûr, Après avoir écrit cette entrée de blog, J'ai juste fait une recherche pour « ShowInPicker" et a conclu de nombreux hits, y compris ce: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Il explique la signification de ces biens ainsi que quelques autres bonnes choses de la BDC.

</fin>

S'abonner à mon blog!

Tags Technorati:

Rapide & Facile: Créez un dossier et d'affecter un Type de contenu (Ou, A vos indicateurs de performance clés et les manger trop)

Afin de contourner un problème d'indicateur de performance clé J'ai écrit ici, J'ai fait quelques essais et découvert le travail de cet indicateur de performance clé contre les dossiers avec des métadonnées de la même manière qu'ils travaillent contre les documents ou les éléments de la liste. J'ai prouvé en créant un nouveau type de contenu basé sur le type de contenu de dossier et ensuite ajouté quelques champs. J'ai créé quelques indicateurs et prouvé à moi-même que les indicateurs de performance clés fonctionnent comme prévu. C'était la bonne nouvelle. Il n'est pas parfait, parce que l'exploration, vous obtenez de l'indicateur de performance clé contre les dossiers n'est pas exactement ce que vous voulez. Ce n'est pas trop un inconvénient dans mon cas, parce que 1) les utilisateurs finaux ne savent pas mieux et 2) l'exploration va vers un dossier. Il clique sur le nom du dossier et qu'ils sont à l'ordre du jour. C'est deux clics au lieu d'un, qui n'est pas la fin du monde.

Cela découle bien avec le travail que je faisais. Je crée un dossier pour chaque document qui obtient téléchargée. Cela se fait via un récepteur d'événements. Comme un résultat, C'est un morceau de gâteau pour garder le du dossier parent meta-données en synchronisation avec les métadonnées axée sur l'indicateur de performance clé dans le fichier lui-même car la plomberie est déjà en place. Cela me permet d’avoir mes KPI’s et de les manger aussi 🙂

J'ai modifié le récepteur d'événements pour ajouter le dossier et puis définissez type de contenu de ce nouveau dossier sur mon type de contenu personnalisé respectueux de l'indicateur de performance clé. Ce morceau de code a fait le tour:

 SPFolderCollection srcFolders = targetWeb.GetFolder(« Documents").Sous-dossiers;
  SPFolder addedFolder = srcFolders.Add(Propriétés.ListItem.ID.ToString());
  SPContentTypeId kpiCT = Nouveau SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["ID de Type de contenu"] = kpiCT;
  addedFolder.Item.Update();

Pour localiser l'ID de Type de contenu actuel, J'ai consulté ce type de contenu via les paramètres de site et copie/collé de l'URL comme indiqué:

image

</fin>

S'abonner à mon blog!

Facile et rapide: Obtenir le SPFolder d'un SPListItem dans un récepteur d'événements

Je déteste l'admettre, mais j'ai eu du mal avec celui-ci tous les jours. Mon récepteur d'événements doit mettre à jour un champ de son dossier parent. Cela peu montre comment le faire:

privé VOID UpdateParentFolder(SPItemEventProperties propriétés)
{

SPFolder thisItemFolder = propriétés.ListItem.File.ParentFolder;
thisItemFolder.Item[« Statut d'approbation ZZ"] = "De bonnes nouvelles, tout le monde!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

Dans ce cas, Je travaille avec une bibliothèque de documents et les propriétés proviennent d'un événement ItemAdded.

L'astuce est que vous ne pouvez pas le SPFolder de l'élément directement à partir de l'élément lui-même (i.e. Propriétés.ListItem.Folder est null). Au lieu de cela, aller à fichier associé de l'élément de liste et obtenir le dossier de.

</fin>

S'abonner à mon blog!

Tags Technorati:

Encore un autre récepteur d'événements de débogage Trick

Je ne sais pas que je ne suis pas la première personne pour arriver à cela. Cependant, Je n'ai pas remarqué quelqu'un publie un truc comme ça que j'ai commencé très attentif à la communauté en juillet dernier. Si, J'ai pensé à qu'elle après cette astuce de débogage rapide et facile.

Je travaille sur un récepteur d'événements qui a commencé à générer cette erreur dans le 12 ruche:

Erreur lors du chargement et l'exécution de récepteur d'événements Conchango.xyzzyEventReceiver dans xyzzy, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = blahbalhbalh. Des renseignements supplémentaires sont ci-dessous. : Référence d'objet non définie à une instance d'un objet.

Je ne savais pas où j'avais présenté ce bug parce que j'avais fait trop de choses dans l'un de mes cycles de code/déploiement/test.

J'ai essayé Cette solution pour obtenir mon APB là-dedans avec l'espoir de que SharePoint 12 ruche montrerait la trace de la pile, mais pas de chance. Je ne sais pas si c'est possible et si quelqu'un le fait, Please let me know 🙂

Je sais que c'est possible de écrire vos propres messages de log à la 12 ruche. Franchement, Je voulais quelque chose un peu moins effrayante et plus rapides à mettre en œuvre.

Il m'est apparu que je pouvais au moins obtenir quelques informations de base trace en attrapant et re-levée d'exceptions génériques comme ceci:

  Essayez {
    UpdateEditionDate(propriétés);
  }
  captures (Exception e)
  {
    jeter Nouveau Exception("Dispatcher, UpdateEditionDate(): Exception: [" + e.ToString() + "].");
  }

Cela est apparu dans le 12 ainsi la ruche:

Erreur lors du chargement et l'exécution de récepteur d'événements Conchango.xyzzyEventReceiver dans xyzzy, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = bonnefin. Des renseignements supplémentaires sont ci-dessous. : Répartiteur, UpdateEditionDate(): Exception: [Système NullReferenceException.: Référence d'objet non définie à une instance d'un objet. à Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Propriétés de SPItemEventProperties) à Conchango.xyzzyManagementEventReceiver.Dispatcher(Propriétés de SPItemEventProperties, Chaîne eventDescription)].

Cela m'a donné tous les détails que j'avais besoin pour traquer ce problème particulier et je m'attends à l'utiliser beaucoup aller de l'avant.

</fin>

S'abonner à mon blog!