私は現在、SitecoreデータベースにC#経由でアイテムを追加して戦っています。Sitecoreアイテムをプログラムで作成する方法(アイテムとフィールドを追加する)?
以下のコードは正しく実行されますが、アイテムは作成されていません。
また、項目["FieldName"] = value;構文では実際にFieldsコレクションにデータが格納されません。
アイテムのFieldsコレクションは読み込み専用なので、その上に.Addを呼び出すことはできません(そのようなメソッドは存在しません)。
だから、子アイテムを作成してそのフィールドに移入する正しい方法は何ですか?
私は、Sitecoreバックエンドとこのコードの両方にMasterデータベースを使用しています。
私は以下の使用コード:
using (new Sitecore.SecurityModel.SecurityDisabler())
{
Database db = Factory.GetDatabase(this.Database);
foreach (var vacancy in Articles.Tables[0].Rows)
{
var rootItem = db.GetItem(this.RootItem);
DataRow dr = (DataRow) vacancy;
var newItem = rootItem.Add(string.Format("{0} {1}", dr["numericID"], dr["job_name"]),
db.GetTemplate(new ID("{GUID}")));
newItem.Editing.BeginEdit();
newItem["Job Title"] = dr["job_name"].ToString();//
newItem.Editing.EndEdit();
}
}
さらに詳しい情報: newItem.Template.Fieldsは100のフィールド
newItem.Fieldsでコレクションを返すことで唯一の9つの要素を持つFieldCollectionを返します。
私はコードnewItem ["field"]を渡します。値=値; newItem.Fieldsコレクションのカウントはインクリメントされません。
もちろん、「フィールド」キーはnewItem.Template.Fields [x] .Nameにあるキーと一貫しています。
2)はい、これはFieldsコレクションをあらかじめ入力するのに役立ちました。 –
3)Masterデータベースを使用している場合、Sitecore Content Editorで表示されませんでした。 –
4)はい......... –