1. アクセスフィールド値

アクセスチェックリスト、マルチリスト、ツリーリスト、ツリーリスト、TreelistExフィールド

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore.Data.Fields.MultilistFieldクラスを使うことで、Checklist、Multilist、Treelist、TreelistExなど複数の項目を選択するフィールドタイプにアクセスできます。

Sitecore.Data.Fields.MultilistField.GetItems()メソッドを使って、フィールドで指定されたアイテムを表すSitecore.Data.Item.Itemオブジェクトのリストにアクセスできます。例えば、以下のC#コードは、relatedというMultilistフィールドで指定されたアイテムを反復処理する方法を示しています。

public ActionResult Index() { DogModel myDog; var dogs = new List();

//Get the current page using Sitecore Item API var currentPage = Sitecore.Context.Item;

//Cast to a Sitecore item Sitecore.Data.Items.Item myItem = (Sitecore.Data.Items.Item)currentPage;

//Read the Multifield List Sitecore.Data.Fields.MultilistField multiselectField = myItem.Fields"related";

Sitecore.Data.Items.Item items = multiselectField.GetItems();

//Iterate through each item if (items != null && items.Length > 0) { for (int i = 0; i < items.Length; i++) { //Allocate memory to the model myDog = new DogModel();

Sitecore.Data.Items.Item dogItem = itemsi; myDog.name = FieldRenderer.Render(dogItem, "Name"); myDog.long_description = FieldRenderer.Render(dogItem, "LongDescription"); myDog.breed = FieldRenderer.Render(dogItem, "Breed");

//Get the link to the page var myLink = Sitecore.Links.LinkManager.GetItemUrl(dogItem);

//Need to check and if /en is there - remove it if (myLink.StartsWith("/en")) //remove it myLink = myLink.Substring(myLink.LastIndexOf("/Dogs")); myDog.uri = myLink;

//push to the list dogs.Add(myDog); } }

//Return the collection to the view return View(dogs); }

Sitecore.Data.Fields.MultilistField.GetItems()メソッドで返されるリストの個々のメンバーは決してNullにはなりません。ユーザーが参照を更新せずにアイテムを削除した場合、Sitecore.Data.Fields.MultilistField.GetItems()メソッドはそのアイテムを結果から除外します。

Sitecore.Data.Fields.MultilistFieldクラスを使って型Droplink、Droptree、Grouped Droplinkのフィールドにアクセスすることもできます。このアプローチは、1つ以上のSitecoreアイテムのIDを格納するすべてのフィールドタイプに対して単一のプログラミングモデルを提供し、フィールドの型を変えた場合にコードの更新を減らせます。Droplink、Droptree、Grouped Droplinkは複数の項目選択をサポートしないため、これらのタイプのフィールドを更新するためにSitecore.Data.Fields.Multilistクラスを使うべきではありません。

Sitecore.Data.Fields.MulitlistField.Add()メソッドを使ってサポートフィールドタイプにアイテムを追加し、Sitecore.Data.Fields.MulitlistField.Remove()メソッドでアイテムを削除できます。例えば、Masterデータベースの*/Sitecore/Content/HomeアイテムのTreelistExマルチセレクトフィールドが/Sitecore/Content/Home/Sample1アイテムを指定しつつ、/Sitecore/Content/Home/Sample2*アイテムを指定しないことを確認する:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Items.Item sample1 = master.GetItem("/sitecore/content/home/sample1");

Sitecore.Data.Items.Item sample2 = master.GetItem("/sitecore/content/home/sample2");

Sitecore.Data.Fields.MultilistField multiselectField = home.Fields"multiselect";

if(multiselectField.Contains(sample2.ID.ToString()) || !multiselectField.Contains(sample1.ID.ToString())) { home.Editing.BeginEdit();

if(!multiselectField.Contains(sample1.ID.ToString())) { multiselectField.Add(sample1.ID.ToString()); }

if(multiselectField.Contains(sample2.ID.ToString())) { multiselectField.Remove(sample2.ID.ToString()); }

home.Editing.EndEdit(); }

この記事を改善するための提案がある場合は、 お知らせください!