0

誰かが私がここで間違っていることを教えてもらえますか? リスト内のすべての行を削除するメソッドにリスト名を渡そうとしています:

    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() メソッドに渡すことができますか?

4

2 に答える 2

1

例外が言っていることは、まさに何が起こっているかです。oList_Countryのコンテキストで を作成し、別のコンテキスト内で作業している場所にGetCountry()渡します。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
于 2016-01-20T15:27:17.467 に答える
1

DeleteLastUpdateメソッドで取得したメソッドでコンテキストを再利用しようとするかもしれませんGetCountry。ところでDeleteLastUpdate、多くのクエリを実行すると効果がないように見えます。

于 2016-01-20T15:33:32.157 に答える