Возможно, вы хотите посмотреть на this tutorial.
В событии ItemAdded получите список из другого SPSite и добавьте его туда, используя метод SPList.AddItem(). Чтобы обеспечить достаточные права доступа, запустите его с повышенными привилегиями.
Некоторые примеры кода для в ItemAdded Метод
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using(SPSite siteWhereNewItemWillBeAdded = new SPSite("url of web with list 2"))
using(SPWeb webWithList = siteWhereNewItemWillBeAdded.OpenWeb())
{
SPList targetList = webWithList.Lists["listTitle"];
SPListItem newItem = targetList.AddItem();
//Set properties of item
newItem["column of list 2"] = properties.ListItem["column of list 1"]
newItem.Update();
}
});
Заменить строки с описанным содержание и добавить больше строки набора свойств, если у вас есть несколько столбцов/поля для копирования в элемент из списка 2.
Требование об обновлении - это другая история, которую вам нужно сохранить, чтобы элемент в списке 1 принадлежал к тому элементу в списке 2. В противном случае вы не сможете сказать, какой элемент обновляется, если у вас нет уникального и равного поля в обеих таблицах.
Чтобы добиться того, что вы можете добавить собственный столбец в список2. Допустим, что пользовательский столбец называется «list1Item».
В ItemUpdated события вы бы тогда:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using(SPSite siteWhereNewItemWillBeAdded = new SPSite("url of web with list 2"))
using(SPWeb webWithList = siteWhereNewItemWillBeAdded.OpenWeb())
{
SPList targetList = webWithList.Lists["listTitle"];
var list2Items = targetList.Items;
var syncedItem = from SPListItem item in list2Items
where Convert.ToString(item["list1Item"]).Equals(properties.ListItem.ID.ToString())
select item;
//Set properties of item
syncedItem["column of list 2"] = properties.ListItem["column of list 1"]
syncedItem.Update();
}
});
Чтобы отобразить элементы добавить эту строку в ItemAdded событие, где вы установите значения столбцов.
newItem["list1Item"] = properties.ListItem.ID;
UPDATE: Для того, чтобы соответствовать обновление вопроса
Это полный код в контексте SPSecurity этого пункта Обновлено события? Для чего вы используете эти переменные?
string ID = properties.ListItem["Zone"].ToString();
string internalColNAme = properties.ListItem.Fields["ColNAme"].InternalName.ToString();
Из моего понимания вы пытаетесь написать содержание элемента в list1 в колонке «Зона» на элемент list2 колонке «ColName». Элементы сопоставляются с помощью столбца «Отображение» в списке2. Поддерживает ли ваш ItemAdded Method любую версию следующей строки?
newItem["Mapping"] = properties.ListItemId;
Вы сказали, что его обновление неправильного элемента. У вас есть более одного элемента с тем же содержимым «Сопоставление» в списке2? Ваш код обновит только первый найденный по запросу.
Еогеасп (SPField поле в properties.ListItem.Fields) { , если { newItem [field.InternalName] = properties.ListItem [field.InternalName] (field.ReadOnlyField!); } } новый элемент продуктаОбновить(); webWithList.AllowUnsafeUpdates = false; } }) ;. – zombiee
привет @noobischernoob, пожалуйста, проверьте код в обновленном вопросе – zombiee
Ответ обновлен. Вы отлаживали код, чтобы узнать, возвращает ли SPQuery только 1 элемент? – noobischernoob