Синхронизация элементов списка SharePoint со строками данных CSOM

Я хочу обновить свой список SharePoint данными с данными на основе идентификатора билета, т. е. если идентификатор билета уже есть в списке, я хочу обновить другие поля или добавить новый элемент в список SharePoint.

Я пробовал приведенный ниже код. Он только добавляет элементы списка, не обновляя их:

using (ClientContext context = new ClientContext("https://example.com/list"))

        {
            SecureString passWord = new SecureString();

            foreach (char c in "xxxxxx".ToCharArray()) passWord.AppendChar(c);
            context.Credentials = new SharePointOnlineCredentials("[email protected]", passWord);
            context.Load(context.Web);
            context.ExecuteQuery();
            List oList = context.Web.Lists.GetByTitle("list");

            foreach (DataRow dr in dt.Rows) //my datatable is loaded
            {
               // Console.WriteLine(dr);
                ListItemCreationInformation listCreationInformation = new ListItemCreationInformation();
                ListItem oListItem = fusoList.AddItem(listCreationInformation);
                context.Load(oListItem);
                CamlQuery listquery = CamlQuery.CreateAllItemsQuery(1000);
                var items = oList.GetItems(listquery);
                context.Load(items);
                //context.ExecuteQuery();
                foreach (ListItem oItem in items)
                {
                    //context.Load(oItem);
                    if (oItem["Ticket_x002d_ID"] == dr["Ticket-ID"])
                    {
                        oItem["Title"] = dr["Short Description+"];
                        oItem["Assigned_x0020_To_x0020_Group"] = dr["Assigned To Group"];
                        //oItem["Ticket_x002d_ID"] = dr["Ticket-ID"];
                        oItem["Lastname"] = dr["Lastname+"];
                        oItem["Assigned_x0020_To_x0020_Individu"] = dr["Assigned To Individual"];
                        oItem["Priority"] = dr["Priority"];
                        oItem["Ticket_x002d_Type"] = dr["Ticket-Typ"];
                        oItem["Department"] = dr["Department"];
                        oItem["Status"] = dr["Status"];
                        oItem["Modification_x0020_Date"] = dr["Modification Date"];
                        oItem["StatusAttribute"] = dr["StatusAttribute"];
                        oItem["Creation_x0020_Date"] = dr["Creation Date"];
                        oItem["Firstname"] = dr["Firstname+"];
                        oItem["Remark"] = dr["Remark 2"];
                        oItem.Update();
                    }
                    else
                    {
                        oListItem["Title"] = dr["Short Description+"];
                        oListItem["Assigned_x0020_To_x0020_Group"] = dr["Assigned To Group"];
                        oListItem["Ticket_x002d_ID"] = dr["Ticket-ID"];
                        oListItem["Lastname"] = dr["Lastname+"];
                        oListItem["Assigned_x0020_To_x0020_Individu"] = dr["Assigned To Individual"];
                        oListItem["Priority"] = dr["Priority"];
                        oListItem["Ticket_x002d_Type"] = dr["Ticket-Typ"];
                        oListItem["Department"] = dr["Department"];
                        oListItem["Status"] = dr["Status"];
                        oListItem["Modification_x0020_Date"] = dr["Modification Date"];
                        oListItem["StatusAttribute"] = dr["StatusAttribute"];
                        oListItem["Creation_x0020_Date"] = dr["Creation Date"];
                        oListItem["Firstname"] = dr["Firstname+"];
                        oListItem["Remark"] = dr["Remark 2"];
                        oListItem.Update();
                    }
                }
                context.ExecuteQuery();
            }
            context.ExecuteQuery();

        }

    } 

Может ли кто-нибудь помочь мне достичь этого?


person srujana    schedule 12.12.2016    source источник


Ответы (1)


Эта команда неверна:

ListItem oListItem = fusoList.AddItem(listCreationInformation);

я думаю, вам нужно для INSERT:

ListItem oListItem = oList.AddItem(listCreationInformation);

но все еще не уверен, что это эффективный способ сделать это.

person Natan Kara    schedule 21.11.2017