In this article we will be seeing how to create custom Document ID provider in SharePoint 2010. Here we are going to see how to create a custom Document ID provider in the format "Site Name - List Name - List item ID". Refer This two articles(first and second) for Document ID Service feature in SharePoint 2010. Steps Involved:
namespace DocumentIDProvider{ public classCustomIDProvider : Microsoft.Office.DocumentManagement.DocumentIdProvider { private string idFormat = "{0} - {1}- {2}";
public overridestring[] 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)) { returnnull; } else { returnnew string[] { itemUrl }; } }
public overridestring GenerateDocumentId(SPListItem listItem) { if (listItem ==null) { thrownew ArgumentNullException("listItem"); } return string.Format(this.idFormat, listItem.Web.Title, listItem.ParentList.Title, listItem.ID.ToString()); }
public overridestring GetSampleDocumentIdText(SPSite site) { return string.Format(this.idFormat,"/", "0"); }
public overridebool DoCustomSearchBeforeDefaultSearch { get { return false; } } }}
namespace DocumentIDProvider.Features.CustomIDProviderReciever{ [Guid("e806be7b-a8e1-40a9-ab9a-037e2eb522c9")] public classCustomIDProviderRecieverEventReceiver : SPFeatureReceiver { public override void FeatureActivated(SPFeatureReceiverProperties properties) { DocumentId.SetProvider(properties.Feature.Parentas SPSite, new CustomIDProvider()); }
public overridevoid FeatureDeactivating(SPFeatureReceiverProperties properties) { DocumentId.SetDefaultProvider(properties.Feature.Parentas SPSite); } }}
You need to be a premium member to use this feature. To access it, you'll have to upgrade your membership.
Become a sharper developer and jumpstart your career.
$0
$
. 00
monthly
For Basic members:
$20
For Premium members:
$45
For Elite members: