0

助けてください、

「アップロードしたばかり」のファイルに FIELDS を追加しようとしています。ファイルは SPFolder オブジェクトにアップロードされます。ファイルがファイルにアップロードされるライブラリまたはフォルダーからすべてのフィールドを自動的に追加したい。

1 番目: イベントの「ItemAdded」プロパティから、ライブラリ (SPList) からすべてのフィールドを取得します。

SPList currentList = properties.List;

2 番目: currentList からすべてのフィールドの FIELD COLLECTION を取得します。

SPFieldCollection currentListFieldItems = currentList.Fields;

3番目: すべての FIELD を currentItem (アップロードしたばかりのファイル) に追加します。

for (int i = 0; i < AnzahlFields; i++)
{

                   SPField NeuesFeld = currentListFieldItems[i];
                   String FeldInternalName = currentListFieldItems[i].InternalName;
                   String FeldName = currentListFieldItems[i].Title;
                   NeuesFeld.Type = currentListFieldItems[i].Type;
                   NeuesFeld.Required = currentListFieldItems[i].Required;
                   NeuesFeld.ShowInEditForm = true;
                   NeuesFeld.ShowInDisplayForm = true;
                   NeuesFeld.ShowInListSettings = true;
                   NeuesFeld.ShowInNewForm = true;
                   NeuesFeld.ShowInViewForms = true;


                   if (currentItem.Fields.ContainsField(FeldInternalName))
                   {
                   // The Field already exists
                   }
                   else
                   {
                   // The Field is not existing, will be added
                      currentItem.Fields.Add(NeuesFeld);
                   }

                   } 

currentitem.update();

すべてのフィールドが既に存在していると常に言っているため、機能していません。助けてくれませんか、何が間違っていますか?

シュテフェン

4

1 に答える 1

1

フィールドを SPListItem に追加することはできません。ListItem には、ファイルをアップロードしたリストに存在するすべてのフィールドが既に含まれています。代わりに、フィールドの値を設定したい場合は、フィールドの内部名を使用してこれを行うことができます。

currentItem["InternalNameOfField"] = "I am the new value";

詳細と例については、MSDNを参照してください。

于 2013-10-01T13:55:50.663 に答える