Simple et rapide: Un site Web à l'aide du modèle d'objet SharePoint en c#

J'ai essayé de chercher pour un petit extrait de code qui montre comment je peux créer un nouveau SPWeb dans une collection de sites. Je n'a pas trouver aussi rapidement ou aisément que je m'attendais alors j'ai pensé que je serait frapper ensemble entrée un peu sur le sujet.

Ce code crée un site Wiki:

 SPSite siteCollection;

    siteCollection = Nouveau SPSite(« http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.webs.Add("xyzzy", "xyzzy titre",
        "xyzzy description", 1033, SPWebTemplate.WebTemplateWIKI, faux, faux);

Mes recherches initiales a échoué parce que je cherchais des expressions telles que « disposition un site web à l'aide du modèle d'objet sharepoint" et autres.

Si vous recherche pour Webs.Add »()", Vous trouverez un certain nombre d'entrées de blog très utile, Articles MSDN et la documentation du SDK qui vont en profondeur sur ce sujet. Je recommande vivement ce site.

</fin>

S'abonner à mon blog.

Tags Technorati:

Intégrer les flux de travail SharePoint Designer avec les Services Web

J'ai été jouer avec des actions personnalisées pour SharePoint Designer pendant un certain temps (voir ici pour des trucs détaillés, Si qui vous intéresse).

Dans mon projet actuel, Nous devons faire certains assez gros et que nous voulons utiliser le flux de travail déclaratif SPD pour gérer le processus métier associé.

Longue histoire courte, C'est tout à fait possible. J'ai prolongé mon projet Codeplex pour appeler un service d'assistance de »" et maintenant nous pouvons invoquer un service web directement depuis un flux de travail SPD.

Voici la signature:

 public chaîne Répartiteur(
        GUID WebID, // Adoptée par l'environnement d'exécution
        GUID SiteID, // Adoptée par l'environnement d'exécution
        chaîne ListID, // Adoptée par la RTE (ne sais pas pourquoi il s'agit d'une chaîne, pas un GUID)
        int ListItemID, // Adoptée par la RTE.
        chaîne XmlMessage) // Transmis par l'utilisateur comme déclarée dans le SPD.

Cela tire parti du fait que nous pouvons obtenir d'information important flux de travail, comme le site, ID de la liste, etc.. C'est bien documenté dans plusieurs endroits pour ceux d'entre vous intéressés par la création de vos propres actions personnalisées. L'idée est d'extraire la chaîne XML fourni par l'utilisateur d'envoyer une procédure appropriée. Fun stuff!

Malheureusement, C'est évidemment un billet aller simple à « Loosey Goosey" Terre anti-pattern, mais il vaut mieux que de frapper un mur de briques 🙂

Est-ce un CRUDy si vous le faites même si vous savez que c'est un CRUDy?

J'espère pour cela enrouler à l'intérieur de Codeplex dans un proche avenir. Si vous êtes intéressé à me faire, Give me poke (Messagerie ou laisser un commentaire) et je serai que plus enthousiastes à l'idée de le faire 🙂

</fin>

S'abonner à mon blog.

Tags Technorati: ,

Drôle de dimanche: “Je me demande si votre mot de passe est …”

J'ai récemment acheté le déjeuner pour mon frère (comme d'habitude) et nous avons fini par parler de drôles de choses que nous avons fait dans nos collèges respectifs. Mon alma mater, Lafayette College, le soutien scolaire service informatique avait une façon très inclusive à ce sujet. On nous a donné beaucoup de corde et j'ai profité de ce tantôt.

Deux mes meilleurs souvenirs ont trait à mon bon ami, Gabe. Il avait fait la terrible erreur de dire aux gens son année freshman que "je suis un étudiant de première année, mais j'ai Sophomore debout" en raison des différentes classes de placement avancé qu'il avait pris, etc.. Beaucoup d'entre nous étaient dans la même situation, mais nous n'en parlons tellement. Son année senior, Quand nous initie aux personnes, Nous dirions « ce est Gabe. Il est une personne âgée, mais il a Sophomore debout ".

Le Collège a certains Sun workstation/serveurs exécutant X-Window. Ils avaient des écrans gigantesques et les ingénieurs leur servant de CAO et autres trucs ennuyeux d'ingénieur. Nous CS gens utilisaient pour apprendre la programmation et, Bien sûr, pour jouer à des jeux.

Nous n'avons pas comme les ingénieurs informatiques-impuissant à beaucoup donc une de nos choses préférées à faire serait de telnet à la boîte, ils étaient sur et exécuter X-yeux sur eux. Ce pop-up serait une paire d'yeux qui a suivi la souris sur l'écran. Vous pourriez apparaître encore plus et ont littéralement une douzaine ou plus des applications X-yeux en cours d'exécution. 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 🙂

Nous avons également joué X-trek sur ces boîtes. Pour le faire, vous deviez télécharger la source, obtenir diverses dépendances partout où vous pourriez les trouver et construire. Je n'étais pas un programmeur C sophistiqué, mais je pouvais lire les fichiers d'en-tête. Je cherchais à travers ces et trouvé des directives comme "#DEFINE MAX_TORPEDO_DISTANCE 10". J'ai joué un peu avec qui améliorent la portée et la puissance de phases et de torpilles, Il re-construit et sont ensuite détruits Gabe la prochaine fois que nous avons joué.

Gabe a également été un grand fan d'une émission de TV appelée Blake 7. Je n'avais jamais vu, mais qui ne m'a pas empêché d'insistant sur le fait que le Dr. Qui est le montrer supérieur. The arguments would get heated at times 🙂

Un jour, Il m'est apparu que je pouvais deviner probablement son mot de passe UNIX. J'ai s'assit à côté de lui un jour et a annoncé dans un ton fort, « Je vais deviner votre mot de passe dès maintenant, Gabe." "Oui, droit" fut sa réponse. Ensuite, je me suis connecté, entré son identifiant d'utilisateur, se tourna pour lui faire face, tapé et dit à haute voix, "Je me demande si c'est B-L-A-K-E-7" ? Dactylographie a jamais été aussi particulièrement fructueux comme il l'a fait ce jour-là.

La semaine prochaine (ou bientôt): Plus bouffonneries de salle informatique du Collège.

Vous avez tout à partager? Laisser un commentaire ou un e-mail moi et je vais publier ici.

</fin>

S'abonner à mon blog.

Tags Technorati:

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: