Wednesday, April 15, 2015

Creating SharePoint Columns Programatically Using C#

As a SharePoint developer you can use SharePoint API to create columns programmatically in Lists or Document Libraries. You can set the different properties for the column. Followings are few snippets to create SharePoint column programmatically using C#.

Single line of text

Represents a column that contains a single line of text.

private void AddTextField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.Text, false);
// Get Field
SPFieldText textField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldText;
// Set other properties
textField.Description = "Text Field Description";
// Update field
textField.Update();
}
view raw TextField.cs hosted with ❤ by GitHub

Multiple lines of text

Represents a column that contains a multiple line of text.

private void AddMultiLineTextField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.Note, false);
// Get Field
SPFieldMultiLineText multiLinetextField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldMultiLineText;
// Set other properties
multiLinetextField.Description = "Multiline Text Field Description";
multiLinetextField.NumberOfLines = 10;
// Update field
multiLinetextField.Update();
}

Choice (menu to choose from)

Represents a column that contains choices. It can be single select or multiple select. For single select Choice field renders Dropdown list or Radio button list and for multiple select it renders Checkbox list.

private void AddChoiceField(SPList list)
{
string fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.Choice, false);
// Get field
SPFieldChoice choiceField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldChoice;
// Add options
string[] options = { "Enter Choice #1", "Enter Choice #2", "Enter Choice #3" };
choiceField.Choices.AddRange(options);
// By Default it will be dropdown list
// If multi choice Checkbox list.
choiceField.Type = SPFieldType.MultiChoice;
// Set other properties
choiceField.Description = "Choice Field Description";
choiceField.DefaultValue = "Enter Choice #1";
// Update field
choiceField.Update();
}
view raw ChoiceField.cs hosted with ❤ by GitHub

Number (1, 1.0, 100)

Represents a column that contains numbers. You can use DisplayFormat property to set the allowed number of decimal.

private void AddNumberField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.Number, false);
// Get field
SPFieldNumber numberField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldNumber;
// Set other properties
numberField.Description = "Number Field Description";
numberField.DisplayFormat = SPNumberFormatTypes.NoDecimal;
// Update field
numberField.Update();
}
view raw NumberField.cs hosted with ❤ by GitHub

Currency ($, ¥, €)

Represents a column that contains currency. You can use DisplayFormat property to set the allowed number of decimal. You can use CurrencyLocaleId property to set the currency symbol. You can find full list of Locale Ids here

private void AddCurrencyField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.Currency, false);
// Get field
SPFieldCurrency currencyField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldCurrency;
// Set other properties
currencyField.Description = "Currency Field Description";
currencyField.DisplayFormat = SPNumberFormatTypes.TwoDecimals;
currencyField.CurrencyLocaleId = 1033; // United States
// Update field
currencyField.Update();
}

Date and Time

Represents a column that contains a DateTime value. You can use DisplayFormat property to set the date format.

private void AddDateTimeField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.DateTime, false);
// Get field
SPFieldDateTime dateTimeField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldDateTime;
// Set other properties
dateTimeField.Description = "DateTime Field Description";
dateTimeField.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
dateTimeField.DefaultValue = "[Today]";
// Update field
dateTimeField.Update();
}

Lookup (information already on this site)

Represents a column that contains a information from other List/Document Library from current site.

private void AddLookupField(SPList lookupList, SPList list)
{
var lookupFieldName = "LookupFieldName";
var fieldName = "FieldName";
// Create field
var fieldInternalName = list.Fields.AddLookup(fieldName, lookupList.ID, true);
// Get field
SPFieldLookup lookupField = list.Fields[fieldInternalName] as SPFieldLookup;
// Set properties
lookupField.Description = "Lookup Field Description";
lookupField.LookupField = lookupList.Fields[lookupFieldName].InternalName;
// Update field
lookupField.Update();
}
view raw LookupField.cs hosted with ❤ by GitHub

Yes/No (check box)

Represents a column that contains Boolean value.

private void AddBooleanField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.Boolean, false);
// Get field
SPFieldBoolean booleanField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldBoolean;
// Set other properties
booleanField.Description = "Boolean Field Description";
// Update field
booleanField.Update();
}
view raw BooleanField.cs hosted with ❤ by GitHub

Person or Group

Represents a column that contains a user or group information.

private void AddUserField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.User, false);
// Get field
SPFieldUser userField = new SPFieldUser(list.Fields, fieldInternalName);
// Set other properties
userField.Description = "User Field Description";
userField.AllowMultipleValues = false;
userField.SelectionMode = SPFieldUserSelectionMode.PeopleAndGroups;
userField.LookupField = "Title";
userField.Update();
// Update field
userField.Update();
}
view raw UserField.cs hosted with ❤ by GitHub

Hyperlink or Picture

Represents a column that contains a Url information. It can be Hyperlink or Picture Url.

private void AddUrlField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.URL, false);
// Get field
SPFieldUrl urlField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldUrl;
// Set other properties
urlField.Description = "Url Field Description";
// SPUrlFieldFormatType.Hyperlink or SPUrlFieldFormatType.Image
urlField.DisplayFormat = SPUrlFieldFormatType.Hyperlink;
// Update field
urlField.Update();
}
view raw UrlField.cs hosted with ❤ by GitHub

Calculated (calculation based on other columns)

Represents a column that contains a calculated value based on other columns.

private void AddCalculatedField(SPList list)
{
var fieldName = "FieldName";
// Create field
string fieldInternalName = list.Fields.Add(fieldName, SPFieldType.Calculated, false);
// Get field
SPFieldCalculated calculatedField = list.Fields.GetFieldByInternalName(fieldInternalName) as SPFieldCalculated;
// Set other properties
calculatedField.Description = "Calculated Field Description";
calculatedField.Formula = "=[Title]";
calculatedField.OutputType = SPFieldType.Text;
// Update field
calculatedField.Update();
}

Managed Metadata

Represents a column that contains information from Term Store.

private void AddTaxonomyField(SPSite site, SPList list)
{
var fieldName = "FieldName";
// Get TermSet
TaxonomySession taxonomySession = new TaxonomySession(site);
TermStore termStore = taxonomySession.TermStores["MANAGED_METADATA_SERVICE_NAME"];
Group group = termStore.Groups["GROUP_NAME"];
TermSet termset = group.TermSets["TERMSET_NAME"];
// Create field
TaxonomyField taxonomyField = list.Fields.CreateNewField("TaxonomyFieldType", "DISPLAY_NAME") as TaxonomyField;
taxonomyField.Description = "Managed Metadata Field Description";
taxonomyField.SspId = termStore.Id;
taxonomyField.TermSetId = termset.Id;
taxonomyField.AllowMultipleValues = false;
taxonomyField.Group = "GROUP_NAME";
list.Fields.Add(taxonomyField);
}

No comments:

Post a Comment