Partager via


DocumentIdProvider - Classe

Représente la classe de base abstraite pour l'implémentation d'un générateur de code de Document.

Hiérarchie d’héritage

System.Object
  Microsoft.Office.DocumentManagement.DocumentIdProvider

Espace de noms :  Microsoft.Office.DocumentManagement
Assembly :  Microsoft.Office.DocumentManagement (dans Microsoft.Office.DocumentManagement.dll)

Syntaxe

'Déclaration
<SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel := True)> _
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel := True)> _
Public MustInherit Class DocumentIdProvider
'Utilisation
Dim instance As DocumentIdProvider
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
public abstract class DocumentIdProvider

Remarques

Il est fortement recommandé que le Générateur d'ID de Document fournissent les ID sont uniques et en mesure de type facilement par un utilisateur.

Exemples

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.DocumentManagement;
using Microsoft.SharePoint;

namespace CustomDocIDProvider
{
    /// <summary>
    /// This class provides an example of implementing a document ID provider.
    /// </summary>
    /// <remarks>
    /// The format of ID is "{web Name}@{list Item Guid} is custom ID!"
    /// </remarks>
    public class CustomDocumentIDProvider : DocumentIdProvider
    {
        // The format is "<web Name>@<list Item Guid> is custom ID!"
        private string idFormat = "{0}@{1} is custom ID!";

        public override string[] GetDocumentUrlsById(SPSite site, string documentId)
        {
            string itemUrl = string.Empty;
            // Only proceed if we have the site and document id
            if (site != null && !string.IsNullOrEmpty(documentId))
            {
                string[] splits = documentId.Split('@', ' ');
                string webName = splits.Length > 0 ? splits[0] : null;
                string itemId = splits.Length > 1 ? splits[1] : null;
                try
                {
                    SPWeb web = string.IsNullOrEmpty(webName) ? site.OpenWeb() : site.OpenWeb(webName);
                    SPListItem item = null;
                    Guid itemGuid = new Guid(itemId);
                    // Find the item among the lists on the specified web
                    foreach (SPList list in web.Lists)
                    {
try
{
                        item = list.Items[itemGuid];
}
catch
{
//if it's not in this list, go to the next one
continue;
}
                        if (item != null)
                        {
                            itemUrl = web.Url + "/";
                            itemUrl += item.Url;
                        }
                    }
                }
                catch (Exception) { /* item not found, return an empty array*/ }
            }

    if (string.IsNullOrEmpty(itemUrl))
    {
return null;
            }
    else
    {
        return new string[] { itemUrl };
    }
        }

        public override string GenerateDocumentId(SPListItem listItem)
        {
            if (listItem == null)
            {
                throw new ArgumentNullException("listItem");
            }
            return string.Format(this.idFormat, listItem.Web.Name, listItem.UniqueId.ToString());
        }

        public override string GetSampleDocumentIdText(SPSite site)
        {
            return string.Format(this.idFormat, "/", "0");
        }

        public override bool DoCustomSearchBeforeDefaultSearch
        {
            get { return false; }
        }
    }
}

Cohérence de thread

Tous les membres statique (Partagé dans Visual Basic)s publics de ce type sont thread-safe. Cela n’est pas garanti pour les membres d’instance.

Voir aussi

Référence

DocumentIdProvider - Membres

Microsoft.Office.DocumentManagement - Espace de noms