按值传递 - 列表名称
Pass by value - List name
有人能告诉我我做错了什么吗?我试图将列表名称传递给将删除列表中所有行的方法:
public static void DeleteLastUpdate(Microsoft.SharePoint.Client.List oList)
{
using (var context = new ClientContext(FrontEndAppUrl))
{
var ss = new System.Security.SecureString();
Array.ForEach("hhh".ToCharArray(), (c) => { ss.AppendChar(c); });
context.Credentials = new SharePointOnlineCredentials("yyy", ss);
var web = context.Web;
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View><Query><OrderBy><FieldRef Name='ID' Ascending='TRUE' /></OrderBy></Query></View>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
context.Load(collListItem);
context.ExecuteQuery();
foreach (ListItem oListItem in collListItem)
{
string i = oListItem["ID"].ToString(); ;
ListItem ListItemToDelete = oList.GetItemById(i);
ListItemToDelete.DeleteObject();
context.ExecuteQuery();
}
oList.Update();
}
}
public static void GetCountry()
{
using (var context = new ClientContext(FrontEndAppUrl))
{
Microsoft.SharePoint.Client.List oList_Country = context.Web.Lists.GetByTitle("LISTNAME");
DeleteLastUpdate(oList_Country);
}
}
我得到的错误是在 context.Load(collListItem);
它说该对象在与该对象关联的上下文不同的上下文中使用。我还能如何将列表的值传递给 Delete() 方法?
异常所说的正是正在发生的事情。您在 GetCountry()
的上下文中创建 oList_Country
,然后将其传递给您在不同上下文中工作的 DeleteLastUpdate()
。
也许您应该考虑通过参数将上下文传递给 DeleteLastUpdate()
。那么你的代码就会变成这样:
public static void DeleteLastUpdate(ClientContext context, Microsoft.SharePoint.Client.List oList)
{
// You should not create a context here, but use the supplied context
// using (var context = new ClientContext(FrontEndAppUrl))
// {
var ss = new System.Security.SecureString();
...
}
public static void GetCountry()
{
using (var context = new ClientContext(FrontEndAppUrl))
{
Microsoft.SharePoint.Client.List oList_Country = context.Web.Lists.GetByTitle("LISTNAME");
DeleteLastUpdate(context, oList_Country); // Pass the context
我想您可能会尝试在 GetCountry
方法中重用 DeleteLastUpdate
方法中的上下文。顺便说一句 DeleteLastUpdate
执行大量查询看起来效率不高。
有人能告诉我我做错了什么吗?我试图将列表名称传递给将删除列表中所有行的方法:
public static void DeleteLastUpdate(Microsoft.SharePoint.Client.List oList)
{
using (var context = new ClientContext(FrontEndAppUrl))
{
var ss = new System.Security.SecureString();
Array.ForEach("hhh".ToCharArray(), (c) => { ss.AppendChar(c); });
context.Credentials = new SharePointOnlineCredentials("yyy", ss);
var web = context.Web;
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View><Query><OrderBy><FieldRef Name='ID' Ascending='TRUE' /></OrderBy></Query></View>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
context.Load(collListItem);
context.ExecuteQuery();
foreach (ListItem oListItem in collListItem)
{
string i = oListItem["ID"].ToString(); ;
ListItem ListItemToDelete = oList.GetItemById(i);
ListItemToDelete.DeleteObject();
context.ExecuteQuery();
}
oList.Update();
}
}
public static void GetCountry()
{
using (var context = new ClientContext(FrontEndAppUrl))
{
Microsoft.SharePoint.Client.List oList_Country = context.Web.Lists.GetByTitle("LISTNAME");
DeleteLastUpdate(oList_Country);
}
}
我得到的错误是在 context.Load(collListItem);
它说该对象在与该对象关联的上下文不同的上下文中使用。我还能如何将列表的值传递给 Delete() 方法?
异常所说的正是正在发生的事情。您在 GetCountry()
的上下文中创建 oList_Country
,然后将其传递给您在不同上下文中工作的 DeleteLastUpdate()
。
也许您应该考虑通过参数将上下文传递给 DeleteLastUpdate()
。那么你的代码就会变成这样:
public static void DeleteLastUpdate(ClientContext context, Microsoft.SharePoint.Client.List oList)
{
// You should not create a context here, but use the supplied context
// using (var context = new ClientContext(FrontEndAppUrl))
// {
var ss = new System.Security.SecureString();
...
}
public static void GetCountry()
{
using (var context = new ClientContext(FrontEndAppUrl))
{
Microsoft.SharePoint.Client.List oList_Country = context.Web.Lists.GetByTitle("LISTNAME");
DeleteLastUpdate(context, oList_Country); // Pass the context
我想您可能会尝试在 GetCountry
方法中重用 DeleteLastUpdate
方法中的上下文。顺便说一句 DeleteLastUpdate
执行大量查询看起来效率不高。