並べ替えたいリストのコンテンツ タイプとフィールドをプログラムで調べたことを除いて、回答のコードを使用しました。
//ステップ 1 (オプション): リストの内容を確認するために、リストのコンテンツ タイプとフィールドをリストします。
SPList list = web.Lists[strListName];
string strRet="";
foreach (SPContentType spct in list.ContentTypes)
{
strRet += "<strong>Content Type: </strong>" + spct.Name + ", <strong>Fields</strong>: <br />";
foreach (SPField field in spct.Fields)
{
if (strFieldInfo != "")
{
strFieldInfo += ", ";
}
strFieldInfo += "\"" + field.StaticName + "\"";
}
strRet += strFieldInfo + "<br />-----<br />";
}
//Output the results
lblOutput.Text = strRet;
これで、リストに含まれるコンテンツ タイプの数と、リスト内のフィールドがわかりました。
既定では、コンテンツ タイプ管理が有効になっていない場合、すべてのフィールドを持つ 1 つのコンテンツ タイプが作成されます。
上記のコードからのサンプル出力:
コンテンツ タイプ:イベント、フィールド:
"ContentType"、"Title"、"Location"、"EventDate"、"EndDate"、"Description"、"fAllDayEvent"、"fRecurrence"、"WorkspaceLink"、"EventType"、"UID"、"RecurrenceID"、"EventCanceled "、"Duration"、"RecurrenceData"、"TimeZone"、"XMLTZone"、"MasterSeriesItemID"、"Workspace"、"Course"、"CourseLocation"
次のステップ 2 は、コンテンツ タイプの順序を変更することです。ステップ 1 の出力からカット アンド ペーストし、並べ替えて、「{」と「};」を追加できます。それを囲んで、必要な順序の文字列配列を作成します。
if (list.ContentTypes.Count > 0)
{
SPContentType ct = list.ContentTypes[0]; //Specify the content type here, if you have more than one content type in your list.
string[] fieldnames = { "ContentType", "Title", "Course", "CourseLocation", "EventDate", "EndDate", "Description", "fAllDayEvent", "fRecurrence", "WorkspaceLink", "EventType", "UID", "RecurrenceID", "EventCanceled", "Duration", "RecurrenceData", "TimeZone", "XMLTZone", "MasterSeriesItemID", "Workspace", "Location"};
ct.FieldLinks.Reorder(fieldnames);
web.AllowUnsafeUpdates = true;
ct.Update(true);
web.AllowUnsafeUpdates = false;
}