ExtendedLookupFieldType Cs
ExtendedLookupFieldType Cs
cs
using System;
using System.Threading;
using System.Xml;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace SharePointStu.LookupField.Fields
{
/// <summary>
/// Class for managing the lookup based field.
/// </summary>
public class ExtendedLookupFieldType : SPFieldLookup
{
#region Private Members
#region Constructors
#endregion Constructors
/// <summary>
/// Get or set the Id of the SPWeb object containing the lookup list.
/// </summary>
public Guid WebSourceId
{
get { return GetThreadDataValueAsGuid(THREAD_WEBSOURCEID) != Guid.Empty ?
GetThreadDataValueAsGuid(THREAD_WEBSOURCEID) : LookupWebId; }
set { SetThreadDataValue(THREAD_WEBSOURCEID, value); }
}
/// <summary>
/// Get or set the Id of the lookup list.
/// </summary>
public Guid LookupListId
{
get { return GetThreadDataValueAsGuid(THREAD_LOOKUPLISTID) != Guid.Empty ?
GetThreadDataValueAsGuid(THREAD_LOOKUPLISTID) : new Guid(LookupList); }
set { SetThreadDataValue(THREAD_LOOKUPLISTID, value); }
}
/// <summary>
/// Get or set the Id of the field to use as the display column.
/// </summary>
public Guid DisplayColumnId
{
get { return GetThreadDataValueAsGuid(THREAD_DISPLAYCOLUMNID) != Guid.Empty ?
GetThreadDataValueAsGuid(THREAD_DISPLAYCOLUMNID) : new Guid(LookupField); }
file:///C:/Users/amal.bahrini/Desktop/Data cloud/ExtendedLookupFieldType.cs 1/5
26/11/2024 11:13 ExtendedLookupFieldType.cs
set { SetThreadDataValue(THREAD_DISPLAYCOLUMNID, value); }
}
/// <summary>
/// Get the Id of the field to use as the value column.
/// </summary>
public Guid ValueColumnId
{
get { return SPBuiltInFieldId.ID; }
}
/// <summary>
/// Get the internal name of the related data field.
/// </summary>
public string RelatedFieldName { get { return string.Concat(RELATED_FIELD_PREFIX,
Id.ToString("N")).Substring(0, 32); } }
return fieldControl;
}
}
/// <summary>
/// Called when a field is created.
/// </summary>
/// <param name="op"></param>
public override void OnAdded(SPAddFieldOptions op)
{
AddRelatedField();
base.OnAdded(op);
Update();
}
/// <summary>
/// Called when a field is deleted.
/// </summary>
public override void OnDeleting()
{
RemoveRelatedFields();
base.OnDeleting();
}
if (AllowMultipleValues)
{
UpdateProperty(document, PROPERTY_MULTIPLE, "TRUE");
}
SchemaXml = document.OuterXml;
base.Update();
#region Threading
if (dataSlot != null)
{
return (Guid)dataSlot;
}
return Guid.Empty;
}
#endregion Threading
if (!ParentList.Fields.ContainsFieldWithStaticName(RelatedFieldName))
return;
XmlNodeList nodes =
doc.DocumentElement.SelectNodes(string.Format("//FieldRefs/FieldRef[@Name='{0}']",
RelatedFieldName));
if (nodes != null && nodes.Count > 0)
return;
AssociateInternalName(internalName);
}
if (SPContext.Current.List.Fields.ContainsField(RelatedFieldName))
{
SPField field =
SPContext.Current.List.Fields.GetFieldByInternalName(RelatedFieldName);
field.ReadOnlyField = false;
field.Hidden = false;
field.Update();
SPContext.Current.List.Fields.Delete(field.InternalName);
}
}
doc.LoadXml(SchemaXml);
XmlElement fieldRefs = doc.CreateElement("FieldRefs");
fieldRefs.InnerXml = string.Format("<FieldRef Name=\"{0}\" Explicit=\"TRUE\" />",
fieldInternalName);
doc.ChildNodes[0].AppendChild(fieldRefs);
SchemaXml = doc.InnerXml;
}
document.DocumentElement.Attributes.Append(attribute);
}