C# 如何使用.Net更新Sharepoint ListItem?

C# 如何使用.Net更新Sharepoint ListItem?,c#,.net,sharepoint,sharepoint-2013,splistitem,C#,.net,Sharepoint,Sharepoint 2013,Splistitem,基本上,我查询Sharepoint并获得列表项列表。我浏览列表并检查该项是否需要从外部数据库更新(该代码不存在) foreach (var i in cv) { var items = new ListItemCreationInformation(); var item = lists.AddItem(items); item["Title"] = i.Title; item

基本上,我查询Sharepoint并获得列表项列表。我浏览列表并检查该项是否需要从外部数据库更新(该代码不存在)

 foreach (var i in cv)
            {
               var items = new ListItemCreationInformation();
               var item = lists.AddItem(items);
                item["Title"] = i.Title;

item.Update();
                    ctx.Load(item);
                    ctx.ExecuteQuery();

    }`
下面是我正在运行的一段代码,它不会更新Sharepoint ListItem。我甚至尝试了不同的证书,但都没有用

using(ClientContext ctx = new ClientContext(searchsiteurl)) {
    //NetworkCredential credit = new NetworkCredential(prg.userName, prg.password, prg.domain);
    //ctx.Credentials = credit;
    Web web = ctx.Web;

    List list = web.Lists.GetById(new Guid(site.ListGUID));

    var q = new CamlQuery();
    if (Fullsync) {
        q.ViewXml = "<View><Query><Where><And><BeginsWith><FieldRef Name='SrNumber' /><Value Type='Text'>1</Value></BeginsWith>" + "<Eq><FieldRef Name='_ModerationStatus' /><Value Type='ModStat'>Draft</Value></Eq></And></Where></Query></View>";
    }
    else {

        q.ViewXml = "<View><Query><Where><And><Contains><FieldRef Name='SrNumber' /><Value Type='Text'>1-</Value></Contains><And>" + "<Eq><FieldRef Name='_ModerationStatus' /><Value Type='ModStat'>Approved</Value></Eq>" + "<Gt><FieldRef Name='Modified' /><Value IncludeTimeValue='TRUE' Type='DateTime'>" + last24hours + "</Value></Gt>" + "</And></And></Where></Query></View>";
    }

    var r = list.GetItems(q);
    ctx.Load(r);
    ctx.ExecuteQuery();
    foreach(SP.ListItem lit in r) {
        //do a whole bunch of stuff....

        // this does NOT WORK
        lit.FieldValues["Linked_x0020_CSRs"] = LinkedSRs;
        lit.Update();
        ctx.ExecuteQuery();

    }
}
 foreach (var i in cv)
            {
               var items = new ListItemCreationInformation();
               var item = lists.AddItem(items);
                item["Title"] = i.Title;

item.Update();
                    ctx.Load(item);
                    ctx.ExecuteQuery();

    }`
使用(ClientContext ctx=newclientcontext(searchsiteurl)){
//NetworkCredential credit=新的NetworkCredential(prg.userName、prg.password、prg.domain);
//证书=信用;
Web=ctx.Web;
List List=web.Lists.GetById(新Guid(site.ListGUID));
var q=新的CamlQuery();
如果(完全同步){
q、 ViewXml=“1”+“草稿”;
}
否则{
q、 ViewXml=“1-”+“已批准”+“+最近24小时++”;
}
var r=list.GetItems(q);
载重量(r);
ctx.ExecuteQuery();
foreach(SP.ListItem在r中点亮){
//做一大堆事情。。。。
//这行不通
lit.FieldValues[“Linked_x0020_CSRs”]=链接器;
lit.Update();
ctx.ExecuteQuery();
}
}

文档的问题在于它没有明确指出必须使用.GetItemById()函数检索ListItem才能更新该ListItem

 foreach (var i in cv)
            {
               var items = new ListItemCreationInformation();
               var item = lists.AddItem(items);
                item["Title"] = i.Title;

item.Update();
                    ctx.Load(item);
                    ctx.ExecuteQuery();

    }`
下面的代码应该可以帮助未来的人们寻找这个答案。我花了太长时间才弄明白

                 using (ClientContext ctx = new ClientContext(searchsiteurl))
                {
                    //NetworkCredential credit = new NetworkCredential(prg.userName, prg.password, prg.domain);
                    //ctx.Credentials = credit;
                    Web web = ctx.Web;

                    List list = web.Lists.GetById(new Guid(site.ListGUID));


                   var q = new CamlQuery();
                    if (Fullsync)
                    {
                        q.ViewXml = "<View><Query><Where><And><BeginsWith><FieldRef Name='SrNumber' /><Value Type='Text'>1</Value></BeginsWith>" +
                            "<Eq><FieldRef Name='_ModerationStatus' /><Value Type='ModStat'>Draft</Value></Eq></And></Where></Query></View>";
                    }
                    else
                    {

                        q.ViewXml = "<View><Query><Where><And><Contains><FieldRef Name='SrNumber' /><Value Type='Text'>1-</Value></Contains><And>" +
                                "<Eq><FieldRef Name='_ModerationStatus' /><Value Type='ModStat'>Approved</Value></Eq>" +
                                "<Gt><FieldRef Name='Modified' /><Value IncludeTimeValue='TRUE' Type='DateTime'>" + last24hours + "</Value></Gt>" +
                                "</And></And></Where></Query></View>";
                    }


                    var r = list.GetItems(q);
                    ctx.Load(r);
                    ctx.ExecuteQuery();
                    foreach (SP.ListItem lit in r)
                    {
                                //do a whole bunch of stuff....


                                /* this does NOT WORK
                                lit.FieldValues["Linked_x0020_CSRs"] = LinkedSRs;
                                lit.Update();
                                ctx.ExecuteQuery();
                                */

                                // this works!
                                    var KAToModify = list.GetItemById(lit.Id);
                                    KAToModify["Linked_x0020_CSRs"] = LinkedSRs;
                                    KAToModify.Update();
                                    ctx.ExecuteQuery();

                    }
            }
 foreach (var i in cv)
            {
               var items = new ListItemCreationInformation();
               var item = lists.AddItem(items);
                item["Title"] = i.Title;

item.Update();
                    ctx.Load(item);
                    ctx.ExecuteQuery();

    }`
使用(ClientContext ctx=newclientcontext(searchsiteurl))
{
//NetworkCredential credit=新的NetworkCredential(prg.userName、prg.password、prg.domain);
//证书=信用;
Web=ctx.Web;
List List=web.Lists.GetById(新Guid(site.ListGUID));
var q=新的CamlQuery();
如果(完全同步)
{
q、 ViewXml=“1”+
“草案”;
}
其他的
{
q、 ViewXml=“1-”+
“批准”+
“”+最近24小时+“”+
"";
}
var r=list.GetItems(q);
载重量(r);
ctx.ExecuteQuery();
foreach(SP.ListItem在r中点亮)
{
//做一大堆事情。。。。
/*这行不通
lit.FieldValues[“Linked_x0020_CSRs”]=链接器;
lit.Update();
ctx.ExecuteQuery();
*/
//这管用!
var KAToModify=list.GetItemById(lit.Id);
KAToModify[“链接的”x0020\U CSR”]=链接器;
KAToModify.Update();
ctx.ExecuteQuery();
}
}

它不起作用。您可以使用此枚举器方法

 foreach (var i in cv)
            {
               var items = new ListItemCreationInformation();
               var item = lists.AddItem(items);
                item["Title"] = i.Title;

item.Update();
                    ctx.Load(item);
                    ctx.ExecuteQuery();

    }`
在此处输入代码

 foreach (var i in cv)
            {
               var items = new ListItemCreationInformation();
               var item = lists.AddItem(items);
                item["Title"] = i.Title;

item.Update();
                    ctx.Load(item);
                    ctx.ExecuteQuery();

    }`
您将于本周收到所有列表项 如果您想要列表中的特定项目 您可以使用
GetById()

 foreach (var i in cv)
            {
               var items = new ListItemCreationInformation();
               var item = lists.AddItem(items);
                item["Title"] = i.Title;

item.Update();
                    ctx.Load(item);
                    ctx.ExecuteQuery();

    }`