Question

Je veux créer une colonne en lecture seule dans mon « Demande d'approbation » tâche de workflow Nintex que j'ai envoyé à l'utilisateur. Je l'ai fait ce qui suit:

  1. Création d'une colonne dans ma liste. Nom du champ: « Ligne directrice »
  2. Dans la vue par défaut de cette colonne n'est pas affichée
  3. types de contenu créés qui contient la colonne directrice.
  4. nom du type de contenu: « tâche de workflow »
  5. Ceci est le type de contenu par défaut
  6. Maintenant, lorsque l'utilisateur approuve un élément, il voit le champ « directive »

Cependant, le champ est en mode édition et l'utilisateur peut ajouter des informations à ce domaine. Je veux empêcher l'utilisateur de modifier ce champ!

Que dois-je faire?

Était-ce utile?

La solution

Pour parvenir à une véritable sécurité au niveau de la colonne dans SharePoint, je travaille avec deux listes et créer la colonne comme une recherche. De cette façon, je peux définir des autorisations spécifiques sur la source de recherche (par exemple l'accès en lecture seule ou même refusée).

Il faut plus d'efforts qu'une liste unique, mais pour autant que je sais que c'est le seul moyen sans code côté serveur. Mais dans le cas de seulement une seule liste, des moyens si nous avons besoin une seule liste et ne peut pas ajouter une autre liste, nous sommes confrontés à un problème.

Autres conseils

Vous pouvez utiliser un récepteur d'événements de l'élément qui empêche la valeur d'être changé. Quelque chose comme ceci:

public class EventReceiver1 : SPItemEventReceiver
{
    public override void ItemUpdating(SPItemEventProperties properties)
    {
        if (properties.ListItem["Guideline"] != properties.AfterProperties["Guideline"])
        {
            properties.Cancel = true;
            properties.ErrorMessage = "Guideline is a read-only field";
        }
    }
}

Je suis entièrement d'accord avec @Marc D Anderson et Weimer @ Matt. Vous pouvez utiliser JavaScript pour aider à la présentation de l'interface utilisateur et un récepteur d'événements pour faire respecter le côté serveur valeurs.

En ce qui concerne la partie JavaScript, je vous suggère de jeter un oeil à SPUtility.js (divulgation complète, je maintiens cette bibliothèque open source). Il vous permet de réaliser les opérations suivantes:

<script type="text/javascript">
function InitializeMyForm()
{
    SPUtility.GetSPField('Guideline').MakeReadOnly();
    // more code here...
}
_spBodyOnLoadFunctionNames.push("InitializeMyForm");
</script>

Cela pourrait aller dans une partie Web Content Editor sur votre formulaire (voir la page d'installation du pour plus d'options).

Vous pouvez personnaliser l'EditForm.aspx en utilisant SharePoint Designer. Jetez un oeil à l'article ci-dessous pour voir comment faire cela.

http: //office.microsoft.com/en-us/sharepoint-designer-help/create-a-custom-list-form-HA010119111.aspx

« à l'étape 6 -. Sous Type de formulaire pour créer, indiquez si vous souhaitez créer une nouvelle forme d'article, une forme d'élément d'édition, ou une forme d'élément d'affichage »

Vous choisissez « formulaire d'élément Modifier ». Une fois que vous créez ce formulaire passer par le code source et localiser le fragment de code HTML qui affiche champ « Ligne directrice ». Vous pouvez commenter cette section pour empêcher les utilisateurs de modifier. Ou changer le mode d'édition « Affichage » pour afficher les utilisateurs ne lisent que le contenu.

Réflexions finales - Si le contenu dans le champ d'orientation ne change pas pour chaque article, juste en faire un texte Ligne directrice statique dans la notification des tâches de workflow. Ne créez pas comme un champ. Que les utilisateurs de façon verront un texte d'orientation dans le cadre de la notification d'approbation.

L'essentiel est qu'il n'y a pas une telle chose comme une « colonne en lecture seule » dans SharePoint. Vous pouvez masquer ce, cacher, etc., mais il peut encore être un endroit (généralement la vue de fiche technique est un coupable) où un utilisateur peut saisir des données.

Personnalisation des formes est la meilleure approche pour la fiabilité sur script. (Celui qui me connaît sait que je l'amour travailler avec script!) Si vous protégez la colonne en utilisant un script et le script ne fonctionne pas pour une raison quelconque, la colonne ne sera pas protégé. (Cela pourrait être juste à cause de votre propre bogue dans le script.)

Vous pouvez personnaliser les formulaires dans SharePoint Designer ou en code managé.

Si vous décrivez la colonne comme une colonne de site dans une fonction, vous pouvez ajouter l'attribut ReadOnly (définie à TRUE) ainsi que les attributs suivants:

PITarget="" PrimaryPITarget="" PIAttribute="" PrimaryPIAttribute="" Node=""

Afin de rendre la colonne du site ReadOnly et seulement actualisable via le code. Je n'ai pas testé pour voir si on peut la remplacer par la vue DataSheet; mais je l'aurais pensé pas.

J'ai exploré une autre approche de ce qui utilise le modèle d'objet pour définir la propriété ReadOnlyField (voir: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.readonlyfield.aspx ).

SPList list = web.Lists["Your list name"];
SPField guideline = list.Fields["Guideline"];
guideline.ReadOnlyField = true;
guideline.Update();  

Une fois que cela a été fait à un champ, il ne montrera plus les nouvelles formes et l'objet de modification. L'inconvénient est ici lorsque vous ajoutez nouvel élément à la liste et que vous souhaitez définir la valeur initiale de la colonne en lecture seule. Vous auriez besoin de changer la valeur de l'arrière de la propriété ReadOnlyField false, ajouter l'élément, puis définissez l'arrière de la propriété ReadOnlyField true. Le même processus serait nécessaire si le changement de la valeur du champ de lecture seule. De plus, je l'ai testé pour voir ce qui se passe lorsque vous essayez de changer la valeur par le biais du code avec cet ensemble de propriété sur true. Il ne génère pas d'exceptions ou d'erreurs, il suffit de les rejets de la nouvelle valeur.

Rechercher Lecture seule colonne dans la liste SharePoint, et voir la colonne SharePointBoost / Voir la permission peut bien faire cela.

Eh bien, il a été quelques années de la question a été créé, mais il peut aider les autres.

Je créé une autre colonne comme recherche et renvoie la colonne d'origine, puis modifié la vue décochée la colonne d'origine, c'est tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top