Обновление поля в элементах списка на основе значения, выбранного из выпадающего столбца "Выбор"

У меня есть следующая проблема, у меня есть два списка "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.
            }

        }
    }
Другие вопросы по тегам