C# 如何使用.Net更新Sharepoint ListItem?
基本上,我查询Sharepoint并获得列表项列表。我浏览列表并检查该项是否需要从外部数据库更新(该代码不存在)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
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();
}`