Сохраняются только переменные значения в SPFieldMultiChoice - PullRequest
1 голос
/ 16 сентября 2010

Я занят созданием собственной веб-части с различными текстовыми полями и полями поиска. Все они сохраняются правильно, кроме полей поиска , которые допускают множественный выбор . У меня нет этой проблемы с полями поиска, которые позволяют выбрать только одно значение.

Ниже приведен код для получения всех выбранных элементов в моем списке флажков, преобразования его в значение с несколькими выборами и присвоения моему списку [columnname]

try
{
    SPFieldMultiChoiceValue _segmentchoices = new SPFieldMultiChoiceValue();
    foreach (ListItem ls3 in _segment.Items)
    {
        if (ls3.Selected) _segmentchoices.Add(ls3.Value);
    }
    myItems["Segment"] = _segmentchoices;
    myItems.Update();
}
catch (Exception ex) { _errorMessage += "||| Segment : " + ex.Message; }

Список значений (_segmentchoices) создан правильно и выглядит следующим образом: {; # 1; # 2; # 3; # 4; # 5; #}

Однако при сохранении сохраняются только значения 1, 3 и 5.

Мой код не генерирует ошибку, поэтому я не понимаю, что может быть не так. Любые идеи о том, что мне нужно посмотреть? Я поступаю неправильно?

Любая помощь будет принята с благодарностью. Спасибо

1 Ответ

1 голос
/ 17 сентября 2010

Я только что понял, что вы говорите о поле множественного выбора lookup .Формат должен быть примерно таким: 2;#Procedures;#3;#Systems;#7;#Services

Поведение, которое вы описываете, имеет смысл, потому что оно, вероятно, интерпретирует ;#1;#2;#3;#4;#5;# следующим образом: получить элемент в списке поиска с lookupID 1 (lookupValue равно 2), lookupID = 3 (lookupValue - 4) и lookupID - 5 (lookupValue - пусто)

Ниже приведен код, который можно использовать для обновления поля с несколькими вариантами выбора:

using (SPSite site = new SPSite(siteUrl))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPList list = web.Lists[listName];
        SPListItem item = list.Items[0];

        SPFieldLookupValueCollection spflvc = new SPFieldLookupValueCollection();
        spflvc.Add(new SPFieldLookupValue(3, string.Empty));
        spflvc.Add(new SPFieldLookupValue(7, string.Empty));
        item["Keywords"] = spflvc;
        item.Update();
    }
}

Второй параметр SPFieldLookupValue, похоже, не заботится, передается ли ему строка. Пустая, что также может объяснить, почему он игнорирует их выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...