Обновление поля в элементах списка на основе значения, выбранного из выпадающего столбца "Выбор"
У меня есть следующая проблема, у меня есть два списка "TestUsers" и "TestGroups". Список "TestUsers" состоит из двух столбцов [Группа - Выбор], [Пользователь - Одна строка текста]. Список "TestGroups" состоит из двух столбцов [Группа - Одна строка текста], [CheckedOut - Одна строка текста].
Данные в обоих списках следующие:
TestUsers (Список): Пользователь: testuser1 Группа: группа A
Пользователь: testuser2 Группа: группа B
TestGroups (Список): Группа: группа A CheckedOut: testuser1
Требование заключается в том, что когда пользователь в списках "TestUsers" меняет свою "Группу", например, с "groupA" на "groupB", это также должно быть отражено и автоматически обновлено в списке "TestGroups". Так, например, в списке "TestUsers", если я должен был изменить "Группу" для "testuser1" на "groupB", то в списке "TestGroups" "Группа" из "testuser1" также должна изменить / обновить на "groupB". ".
Я надеюсь, что вышеизложенное достаточно ясно для описания требований.
Я попытался сделать это, используя рабочие потоки и имея столбец поиска, а также вычисляемые столбцы. Но как вычисленные столбцы, так и столбцы поиска, похоже, не работают.
Как бы я пошел для достижения этого с помощью кода в C#. Я знаю, как обновить элементы списка, но я не уверен, как обновить элементы списка из списка, когда значение изменяется в отдельном списке, как упоминалось ранее.
Я застрял в этой проблеме и подумал, что я опубликую ее здесь, чтобы получить быстрые и точные предложения о том, как продолжить.
Большое спасибо, любая помощь с этим будет принята с благодарностью.
1 ответ
Вы можете попробовать это в использовании приемника событий ItemUpdating
Метод события просто проверьте, изменен элемент или нет, и создайте свою логику
public override void ItemUpdating(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
if (properties.ListTitle == "TestUsers")
{
SPWeb web = properties.OpenWeb();
SPList list = web.Lists[properties.ListTitle];
SPListItem litemUser = list.GetItemById(properties.ListItemId);
SPList objFeatureList = web.Lists["TestGroups"];
SPQuery objParentQuery = new SPQuery();
string user = properties.AfterProperties["User"].ToString();
//in Caml query just find it out listitem which contain Users and than update its listitem.
objParentQuery.Query = "<Where><Eq><FieldRef Name='Check_x0020_it_x0020_out'/><Value Type='Integer'>"+You should set Userid in Field From litemUser +"</Value></Eq></Where>";
SPListItemCollection liitemcol = objFeatureList.GetItems(objParentQuery);
foreach (SPListItem litemGroup in liitemcol)
{
litemGroup["Group"] = litemUser["Group"];
litemGroup.Update();
// or if you want to using Workflow just startWorflow when item has match over here.
}
}
}