xiaolizi007
1/16/2017 - 6:29 AM

Lookup Field Add Demo

Lookup Field Add #sharepoint

private void RestrictDeleteOnLookupField(SPWeb web, string listUrl, 
                                         Guid fieldGuid)
{
  SPList list = web.GetList(GetListUrl(web.ServerRelativeUrl, listUrl));
  SPField field = list.Fields[fieldGuid];
  SPFieldLookup fieldLookup = (SPFieldLookup)field;
  fieldLookup.Indexed = true;
  fieldLookup.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict;
  fieldLookup.Update();
}
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
  try
  {
    ...

    //Restrict deletion of list items that would create a broken lookup
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.InventoryLocations, 
                                Constants.Fields.Guids.Part);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.Machines, 
                                Constants.Fields.Guids.Manufacturer);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.Machines, 
                                Constants.Fields.Guids.Category);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.MachineDepartments, 
                                Constants.Fields.Guids.Department);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.MachineDepartments, 
                                Constants.Fields.Guids.Machine);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.MachineParts, 
                                Constants.Fields.Guids.Machine);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.MachineParts, 
                                Constants.Fields.Guids.Part);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.PartSuppliers, 
                                Constants.Fields.Guids.Part);
    RestrictDeleteOnLookupField(rootWeb, Constants.ListUrls.PartSuppliers, 
                                Constants.Fields.Guids.Supplier);
    ...
  }
  catch (Exception e) { System.Diagnostics.Trace.WriteLine(e.ToString()); }
}
using System;
using Microsoft.SharePoint;

namespace RelatedLists
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite siteCollection = new SPSite("http://localhost"))
            {
                using (SPwebsite = siteCollection.OpenWeb())
                {
                    SPList lookupList = site.Lists.TryGetList("Customers");
                    SPList relatedList = site.Lists.TryGetList("Pending Orders");

                    if (lookupList != null && relatedList != null)
                    {
                        string strPrimaryCol = relatedList.Fields.AddLookup("Customer ID", lookupList.ID, true);
                        SPFieldLookup primaryCol = (SPFieldLookup)relatedList.Fields.GetFieldByInternalName(strPrimaryCol);

                        primaryCol.LookupField = lookupList.Fields["ID"].InternalName;
                        primaryCol.Indexed = true;
                        primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict;
                        primaryCol.Update();
                    }
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}