0

ドキュメントを含むドキュメント ライブラリを作成したチーム サイトがあります。ドキュメント ライブラリの列を空に設定しようとしています。

しかし、列は空になりませんか?

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPWeb web = (SPWeb)properties.Feature.Parent;

    SPList list = web.Lists.TryGetList("Document Library");
    if (list != null)
    {
        SPListItemCollection listItemCollection = list.GetItems();
        foreach (SPListItem item in listItemCollection)
        {
            var columnToUpdate ="MyField";
            string internalName = item.Fields[columnToUpdate].InternalName;

            item[internalName] = "";
            item.Update();
        }
    }
}
4

1 に答える 1

0

foreach ループではなく、フィールドを空にする別の方法を見つける必要があると思います。なぜなら、foreach はコンテナーを反復処理することを意図しており、コンテナーを変更せずに各項目が 1 回だけアクセスされるようにして、厄介な副作用 (つまり、foreach が読み取られる) を回避するためです。 -のみ)。次のコードのように、 for ループで同様の手順を実行すると役立つ場合があります。

    SPListItemCollection listItemCollection = list.GetItems();

    for (int i = 0; i < listItemCollection.Count; i++)
    {
        var columnToUpdate = "MyField";
        var item = listItemCollection[i];
        string internalName = item.Fields[columnToUpdate].InternalName;

        item[internalName] = "";
        item.Update();
    }

それが役立つことを願っています。また、ここで解決策が見つからない場合は、 https://sharepoint.stackexchange.com/でこの質問をすることをお勧めします。

于 2015-06-16T11:40:35.010 に答える