none
Перечисление значений в поле с "Allow multiple values". RRS feed

  • Вопрос

  • Здравствуйте. В очередной раз встала задача, в которой хорошо было бы применить перечисление значений из Lookup поля с "Allow multiple values". К сожалению с первой задачей я так и не справился, где хотел, чтоб на указанные учетные записи в таком поле запускался рабочий процесс. Очередная задача - перечисленные пользователем элементы списка в таком поле нужно автоматически изменить в соответствующем списке.

    Подскажите, пожалуйста, как сделать что-то подобное.

    12 июля 2017 г. 10:42

Ответы

  • Добрый день!

    Читаем из поля Lookup с "Allow multiple values" из моего примера с договорами:

    // Тип договора может содержать несколько Типов
    SPFieldMultiChoiceValue Values = new SPFieldMultiChoiceValue(item["Тип договора"].ToString()) as SPFieldMultiChoiceValue;
    string[] typeOfDogovor = new string[] { "Тип1", "Тип2", "Тип3", "Тип4", "Тип5", "Тип6" }; // Подготовка и инициализация массива на уже известное максимальное количество значений типов договоров. Если не известно количество, то можно инициализировать во время заполнения
    for (int i = 0; i < Values.Count; i++)
    {
       typeOfDogovor[i] = Values[i].Trim(); // Заполняем переменную, которую можем использовать
    }
    
    Пишем в поле Lookup с "Allow multiple values" из моего примера с договорами:
    SPFieldMultiChoiceValue Values1 = new SPFieldMultiChoiceValue();
    Values1.Add("Коммерческий");
    Values1.Add("Конфиденциальный");
    item["Тип договора"] = Values1;
    item.Update();
    12 июля 2017 г. 11:32
  • Получаем из lookup как строку и ищем в нужном списке уже элемент через query. А если это действительно lookup на другой список, то строка имеет вид : index;#value,

    Например: 33;#Коммерческий договор и потом list.items[33] , как то так

    3 августа 2017 г. 6:40

Все ответы

  • Добрый день!

    Читаем из поля Lookup с "Allow multiple values" из моего примера с договорами:

    // Тип договора может содержать несколько Типов
    SPFieldMultiChoiceValue Values = new SPFieldMultiChoiceValue(item["Тип договора"].ToString()) as SPFieldMultiChoiceValue;
    string[] typeOfDogovor = new string[] { "Тип1", "Тип2", "Тип3", "Тип4", "Тип5", "Тип6" }; // Подготовка и инициализация массива на уже известное максимальное количество значений типов договоров. Если не известно количество, то можно инициализировать во время заполнения
    for (int i = 0; i < Values.Count; i++)
    {
       typeOfDogovor[i] = Values[i].Trim(); // Заполняем переменную, которую можем использовать
    }
    
    Пишем в поле Lookup с "Allow multiple values" из моего примера с договорами:
    SPFieldMultiChoiceValue Values1 = new SPFieldMultiChoiceValue();
    Values1.Add("Коммерческий");
    Values1.Add("Конфиденциальный");
    item["Тип договора"] = Values1;
    item.Update();
    12 июля 2017 г. 11:32
  • А если в такое Lookup поле помещены элементы списка, то как их можно извлечь в качестве элементов списка, а не в виде строк?
    3 августа 2017 г. 4:25
  • Получаем из lookup как строку и ищем в нужном списке уже элемент через query. А если это действительно lookup на другой список, то строка имеет вид : index;#value,

    Например: 33;#Коммерческий договор и потом list.items[33] , как то так

    3 августа 2017 г. 6:40
  • спасибо.

    Я еще нашёл такой класс SPFieldLookupValueCollection, но он как раз таки и позволяет обратиться отдельно к values[i].LookupValue и values[i].LookupId.


    3 августа 2017 г. 9:40