2011-11-08 22 views
5

フィールドをプログラムでリストに追加します。フィールドは多くの情報で満たされているメソッドの最初の行の後SharePoint 2010のSPFieldの内部名を設定する方法は?

public static bool AddFieldToList(SPList list, SPFieldType fieldType, string fieldInternalName, string fieldDisplayName, string fieldDescription, bool unique, bool required, bool indexed) 
    { 
     SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName);    
     bool success = AddFieldToList(list, field, fieldDisplayName, fieldDescription, unique, required, indexed); 
     return success; 
    } 

:次の行は、既存のリスト

Lists.AddFieldToList(warrantyList, SPFieldType.Text, "internalFieldName", "ShownFieldName", "Comment", false, false, false);      

これは、呼び出されるメソッドですfield'to新しいが追加されますinternalName(NULL)と "internalFieldName"を含むTitleはありません。 2行目

以下のメソッドが呼び出される:

public static bool AddFieldToList(SPList list, SPField field, string fieldDisplayName, string fieldDescription, bool unique, bool required, bool indexed) 
    { 
     if (field != null && 
      (!list.Fields.Contains(field.Id))) 
     { 

      field.ReadOnlyField = false; 
      field.Title = fieldDisplayName; 
      field.Description = fieldDescription; 
      field.EnforceUniqueValues = unique; 
      field.Indexed = indexed; 
      field.Required = required; 
      list.Fields.Add(field); 
      return true; 
     } 

     return false; 
    } 

タイトルが(もちろん)「ShownFieldName」に変更された後。しかし、私の目標は、 "ShownFieldName"という表示名を持つ内部名 "internalFieldName"を持っているので、 "ShownFieldName"がリストに表示されますが、内部名で項目にアクセスできます

としてfield.InternalNameはreadOnlyです。その問題を解決することはできますか?何がデータベースあなたの変化に保存された前

SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName); 

しかし

答えて

6

この行は、あなたが必要とする内部名を(constructorに渡されたdisplayNamefieldInternalNameに等しい)を持つことができSPFieldオブジェクトを作成します。その次の行で:

field.Title = fieldDisplayName; 

はここソリューションです:

  1. fieldInternalNamefieldDisplayName両方としてinternalFieldNameを渡すリストにフィールドを追加します。
  2. SPList.Update()メソッドを呼び出します。
  3. フィールド参照をリストから取得し、TitleプロパティをShownFieldNameに変更します。
  4. SPField.Update()メソッドを呼び出します。
+0

ありがとう、マレック。働いた。 –

2

これらは、SharePoint 2007以降、SharePointにはAddFieldAsXmlというメソッドがあります。これを行うと、フィールドの追加方法をより詳細に制御できます。上のリンクの例を参照してください。

+0

私はその方法を知っていますが、文字列を構築するのではなく「実際の」オブジェクトを使ってプログラミングする方が好きです。 –

関連する問題