Partager via


SharePoint 2013: Placer un Champ en Lecture Seule dans les editform/newform durant le Provisioning de Liste (fr-FR)

Note : Cet article est une traduction.  

Besoin: Placer un champ texte nommé 'Application Name' en lecture seule dans le formulaire d'édition d'une liste. La liste est créée duant le provisioning du site.

Solution: Customiser l'editform de la liste en ajoutant une webpart "content editor" et du JavaScript pour rendre le champ en lecture seul. Ajoutez le code suivant dans le fichier schema.xml de la liste.

<Form Type="EditForm" Url="EditForm.aspx" Path="CustomEditForm.aspx" WebPartZoneID="Main"UseDefaultListFormWebPart="False" >
        <WebParts>
          <AllUsersWebPart WebPartZoneID="Main" WebPartOrder="1">
            <![CDATA[
              <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2  ">
              <Assembly>Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>                      
              <TypeName>Microsoft.SharePoint.WebPartPages.ListFormWebPart</TypeName>
              <PageType>PAGE_EDITFORM</PageType>
            </WebPart>]]>
          </AllUsersWebPart>
          <AllUsersWebPart WebPartZoneID="Main" WebPartOrder="2">
            <![CDATA[
        <WebPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance  " xmlns:xsd="http://www.w3.org/2001/XMLSchema  " xmlns="http://schemas.microsoft.com/WebPart/v2  ">
        <Title>Web part title</Title>
        <FrameType>None</FrameType>
        <Description>Web part description</Description>
        <FrameState>Normal</FrameState>
        <Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
        <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>
        <ContentLink xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor  " />
        <Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor  ">
         
          <script>
         
       var prev_handler = window.onload;
            this.window.onload = function () {
               if (prev_handler) {
                 prev_handler();
               }
 
      var lists = document.getElementsByTagName('input');
        for ( var i = 0; i < lists.length; i++) {
              if (lists[i].getAttribute('title') === 'Application Name' ) {
                lists[i].readOnly = true;
               
              }
           }
         
          </script>    
           </Content>
            <PartStorage xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor  " />
           </WebPart>
 
            ]]>
          </AllUsersWebPart>
        </WebParts>
      </Form>

PS : Le script doit être mis à jour si le nom du champ est modifié.

Autres Langues

Cet article est également disponible dans les langues suivantes :