Ulteam.SharePoint

FieldValue Class

Namespace: Ulteam.SharePoint

Description

Класс по работе со значениями полей в элементе списка SharePoint.

Methods

Name Description
GetValue<T>(SPListItem Item, String Key) Возвращает значение поля типа T элемента списка.
Item: Элемент списка
Key: Internal Name поля
GetValueAsBool(SPListItem Item, String Key) Возвращает логическое значение поля элемента списка.
Item: Элемент списка
Key: Internal Name поля
GetValueAsChoice(SPListItem Item, String Key) Возвращает значение поля типа “Выбор” (без множественных значений) элемента списка.
Item: Элемент списка
Key: Internal Name поля
GetValueAsDateTime(SPListItem Item, String Key, Boolean AsUTC) Возвращает значение поля типа “Дата и время” элемента списка. Если не удалось перевести в DateTime, то возвращается DateTime.MinValue.
Item: Элемент списка
Key: Internal Name поля
AsUTC: Перевести в UTC формат.
GetValueAsInt(SPListItem Item, String Key) Возвращает числовое значение поля элемента списка.
Item: Элемент списка
Key: Internal Name поля
GetValueAsLookup(SPListItem Item, String Key) Возвращает значение поля типа “Подстановка без множественного выбора” элемента списка. Если в поле доступен множественный выбор, то вернется только первое значение.
Item: Элемент списка
Key: Internal Name поля
GetValueAsMultiChoice(SPListItem Item, String Key) Возвращает значение поля типа “Выбор” с множественными значениями элемента списка.
Item: Элемент списка
Key: Internal Name поля
GetValueAsMultiLookup(SPListItem Item, String Key) Возвращает значение поля типа “Подстановка с множественным выбором” элемента списка. Если в поле недоступен множественный выбор, то вернется массив с одним значением.
Item: Элемент списка
Key: Internal Name поля
GetValueAsMultiUser(SPListItem Item, String Key) Возвращает значение поля типа “Пользователь или группа с множественным выбором” элемента списка. Если в поле недоступен множественный выбор, то вернется массив с одним значением.
Item: Элемент списка
Key: Internal Name поля
GetValueAsText(SPListItem Item, String Key) Возвращает текстовое значение поля элемента списка.
Item: Элемент списка
Key: Internal Name поля
GetValueAsUrl(SPListItem Item, String Key) Возвращает значение поля типа “Изображение или ссылка” элемента списка.
Item: Элемент списка
Key: Internal Name поля
GetValueAsUser(SPListItem Item, String Key) Возвращает значение поля типа “Пользователь или группа без множественного выбора” элемента списка. Если в поле доступен множественный выбор, то вернется только первое значение.
Item: Элемент списка
Key: Internal Name поля
SetValueAsLookup(String LookupId) Возвращает значение для записи в поле типа “Подстановка без множественного выбора” элемента списка.
LookupId: Id элемента списка в подстановке
SetValueAsMultiChoice(String valueList, Char Separator) Возвращает значение для записи в поле типа “Выбор с множественными значениями” элемента списка.
valueList: Список значений.
Separator: Разделитель в списке.
SetValueAsMultiLookup(String LookupIdList, Char Separator) Возвращает значение для записи в поле типа “Подстановка с множественным выбором” элемента списка.
LookupIdList: Список Id элементов списка в подстановке.
Separator: Разделитель в списке.
SetValueAsMultiUser(List<SPUser> Users) Возвращает значение для записи в поле типа “Пользователь или группа с множественным выбором” элемента списка.
Users: Список пользователей.
SetValueAsMultiUser(List<SPFieldUserValue> UserValues) Возвращает значение для записи в поле типа “Пользователь или группа с множественным выбором” элемента списка.
UserValues: Список пользователей.
SetValueAsMultiUser(String UserIdList, Char Separator) Возвращает значение для записи в поле типа “Пользователь или группа с множественным выбором” элемента списка.
UserIdList: Список Id пользователей
Separator: Разделитель в списке
SetValueAsUrl(String Url, String Description) Returns value for saving to SPListItem Url field.
Url: Link Url value.
Description: Link Description value.
SetValueAsUser(SPWeb Web, String UserId) Возвращает значение для записи в поле типа “Пользователь или группа без множественного выбора” элемента списка.
Web: Узел, на котором добавлен пользователь с UserId.
UserId: Id пользователя.
GetEmails(SPFieldUserValue Value, SPSite Site) Получение Email’ов пользователей в группе SharePoint или Email одного пользователя, если FieldUserValue - это пользователь.
Value: Значение поля типа “Пользователь или группа”.
Site: Site collection.
GetEmails(List<SPFieldUserValue> Values, SPSite Site) Получение Email’ов пользователей в группе SharePoint или Email одного пользователя, если FieldUserValue - это пользователь.
Values: Список значений поля типа “Пользователь или группа”.
Site: Site collection.
GetEmailsFromGroup(SPGroup Group) Получение Email’ов пользователей в группе SharePoint.
Group: Группа SharePoint.
GetUserFieldType(SPFieldUserValue Value, SPSite Site) Определяем тип SPFieldUserValue: пользователь или группа.
Value: Значение поля типа “Пользователь или группа”.
Site: Site collection.

Samples


/// <summary>
/// Get email list by SPFieldUserValue.
/// </summary>
public void GetEmails()
{
    SPSite site = Settings.Mock.Site;

    SPGroup group = Settings.Mock.Groups[0];
    SPUser user = Settings.Mock.Users[0];

    SPFieldUserValue groupValue = new SPFieldUserValue { LookupId = group.ID };
    SPFieldUserValue userValue = new SPFieldUserValue { LookupId = user.ID };

    // returns email list for all users in group
    List<string> emails = groupValue.GetEmails(site);

    List<SPFieldUserValue> fieldUserValues = new List<SPFieldUserValue> { groupValue, userValue };
    // returns email list for all users in group and email for userValue and delete duplicate values
    emails = fieldUserValues.GetEmails(site);
}

/// <summary>
/// Get field values from SPListItem
/// </summary>
public void GetFieldValues()
{
    SPListItem item = Settings.Mock.Lists["FieldValueList"].GetItemById(1);
    
    string textValue = item.GetValueAsText("TextField");
    bool boolValue = item.GetValueAsBool("BooleanField");
    DateTime dateTimeValue = item.GetValueAsDateTime("DateTimeField");
    int intValue = item.GetValueAsInt("NumberField");

    string choiceValue = item.GetValueAsChoice("ChoiceField");
    SPFieldMultiChoiceValue multiChoiceValue = item.GetValueAsMultiChoice("MultiChoiceField");

    SPFieldLookupValue fieldLookupValue = item.GetValueAsLookup("LookupField");
    SPFieldLookupValueCollection fieldLookupValues = item.GetValueAsMultiLookup("MultiLookupField");

    SPFieldUserValue fieldUserValue = item.GetValueAsUser("UserField");
    SPFieldUserValueCollection fieldUserValues = item.GetValueAsMultiUser("MultiUserField");
}

/// <summary>
/// Get SPFieldUserValue type: user or group.
/// </summary>
public void GetUserFieldType()
{
    SPSite site = Settings.Mock.Site;

    SPGroup group = Settings.Mock.Groups[0];
    SPUser user = Settings.Mock.Users[0];

    SPFieldUserValue groupValue = new SPFieldUserValue { LookupId = group.ID };
    SPFieldUserValue userValue = new SPFieldUserValue { LookupId = user.ID };

    groupValue.GetUserFieldType(site); // returns FieldValueType.Group
    userValue.GetUserFieldType(site); // returns FieldValueType.User
}

/// <summary>
/// Set values to SPListItem.
/// </summary>
public void SetFieldValues()
{
    SPWeb web = Settings.Mock.Web;

    SPUser user1 = Settings.Mock.Users[0];
    SPUser user2 = Settings.Mock.Users[1];

    string userId = user1.ID.ToString(); // user id from site collection user list
    string userIdList = $"{user1.ID.ToString()},{user2.ID.ToString()}";

    SPList list = Settings.Mock.Lists["FieldValueList"];

    SPListItem newItem = list.AddItem();

    newItem["UserField"] = FieldValue.SetValueAsUser(web, userId); // userId = "11"
    newItem["MultiUserField"] = FieldValue.SetValueAsMultiUser(userIdList, ','); // userIdList = "11,12"
    newItem["LookupField"] = FieldValue.SetValueAsLookup("1");
    newItem["MultiLookupField"] = FieldValue.SetValueAsMultiLookup("1,2", ',');

    newItem.UpdateItem();

    // ---------------
    // or another way with method AddListItem from Lists class

    Dictionary<string, object> itemData = new Dictionary<string, object>
    {
        { "UserField", FieldValue.SetValueAsUser(web, userId) },
        { "MultiUserField", FieldValue.SetValueAsMultiUser(userIdList, ',') },
        { "LookupField", FieldValue.SetValueAsLookup("1") },
        { "MultiLookupField", FieldValue.SetValueAsMultiLookup("1,2", ',') }
    };

    list.AddListItem(itemData);
}

Updated: