Tuesday, September 9, 2014

Working With Sitecore List Fields

Working with Single list item

     Sitecore.Data.Fields.ReferenceField refDroplinkField = current.Fields ["Drop Link Field"];
            Sitecore.Data.Fields.ReferenceField refDroplistField = current.Fields["Drop List Field"];
            Sitecore.Data.Fields.ReferenceField refGroupedDroplinkField = current.Fields ["Grouped Droplink Field"];
            Sitecore.Data.Fields.ReferenceField refGroupedDroplistField = current.Fields ["Grouped Droplist Field"];
            Sitecore.Data.Fields.ReferenceField refDroptreeField = current.Fields ["Drop Tree Field"];
            if (refDroptreeField != null && refDroptreeField.TargetItem != null)
                //ltPageData.Text = refDroplinkField.TargetItem.Fields["Category Name"].Value;
                //ltPageData.Text = refDroplistField.Path;
                //ltPageData.Text = refGroupedDroplinkField.TargetItem.Fields["Category Name"].Value;
                // ltPageData.Text = refGroupedDroplistField.Path;
                ltPageData.Text = refDroptreeField.TargetItem.Fields["Category Name"].Value;

Note: Droplist data type only stores the string value of the item that was chosen by the content editor, not the GUID that would allow us to get back to the item and gets its other fields. So aside from doing string matching on the name of the item, there’s no way to get back to the actual item that was chosen.

Working with Multi list item

        Sitecore.Data.Fields.MultilistField refMultilistField = current.Fields["Multi List Field"];
            if (refMultilistField != null)
                Item[] items = refMultilistField.GetItems();
                List<Item> check = items.Where(x => x.Fields["Category Name"].Value == "Liquor").ToList();

Treelist / TreelistEx:

The value of Treelist/ TreelistEx fields are very similar to the value of the Checklist and Multilist field in that it is a pipe-separated list of IDs of the selected items.

For performance, you should use the TreelistEx field type in your data templates instead of the Treelist field type. With a Treelist, the client renders the selection tree and the list of selected items whenever the user selects an item that contains the field. With a TreelistEx, the client renders only the list of selected items, and does not render the selection tree until the user clicks the Edit command above the field.

Source Parameters

DataSource: The root item the field points to. Must be a path.

ExcludeTemplatesForSelection: This is a comma separated list of template names that should NOT be allowed for selection. These items may need to appear in the treelist to show sub-items, but these cannot actually be selected. For example folders.

IncludeTemplatesForSelection: This is a comma separated list of template names that should be allowed for selection. If this is defined, only items of templates defined in this list can be selected.

ExcludeTemplatesForDisplay: This is a comma separated list of templates that should not be displayed in the treelist. Any sub-items of these templates will also not display because they are hidden.

IncludeTemplatesForDisplay: This is a coma separated list of template names that should be displayed in the treelist. If this is defined, only items of templates defined in this list can be displayed. An important thing to note here is that for any templates in this list, the parent items must at least be displayed in the treelist in order for these to show up.

IncludeItemsForDisplay: This is a comma separated list of GUIDs that should be displayed.
DataSource=/sitecore/common/categories&IncludeItemsForDisplay= {93FBD42C-458A-4C9C-A999-1EE2B651C6E1}, {3ABCX2C-458A-4C9C-A999-1EE2B651C6E1}

ExcludeItemsForDisplay: This is a comma separated list of GUIDs that should NOT be displayed.
DataSource=/sitecore/common/categories&ExcludeItemsForDisplay= {93FBD42C-458A-4C9C-A999-1EE2B651C6E1}, {3ABCX2C-458A-4C9C-A999-1EE2B651C6E1}

AllowMultipleSelection: This defines whether or not an editor can select the same item more than once. It takes a word yes.

DatabaseName: Changes the database name being referenced. Useful if using an external data provider.

Working with Name Value List Field:

The Name Value List field type allows the user to enter values for zero or more arbitrary keys. Sitecore stores the values entered as a list of key=value pairs separated by ampersands “&”.

Option 1:

  Sitecore.Data.Fields.NameValueListField refNameValuelistField = current.Fields["Name Value List Field"];
        if (refNameValuelistField != null )
            NameValueCollection nameValueCollection = refNameValuelistField.NameValues;
            foreach (var nv in nameValueCollection)
                ltPageData.Text += nameValueCollection[nv.ToString()] + "<br/>";

Option 2:

        Sitecore.Data.Fields.MultilistField refMultilistField = current.Fields ["Name Value List Field"];
        if (refMultilistField != null && refMultilistField.List != null)
            string _urlParamsToParse = refMultilistField.List.ToString ();
            NameValueCollection nameValueCollection = Sitecore.Web.WebUtil.ParseUrlParameters(_urlParamsToParse);
            foreach (var nv in nameValueCollection)
                ltPageData.Text += nameValueCollection[nv.ToString()] + "<br/>";

Working with Name Lookup Value List Field:

Name Lookup Value field takes a data source parameter which is used to pick values for entered keys.

        Sitecore.Data.Fields.MultilistField refMultilistField = current.Fields["Name Lookup Value List Field"];
        if (refMultilistField != null && refMultilistField.List != null)
            string _urlParamsToParse = refMultilistField.List.ToString();
            NameValueCollection nameValueCollection = Sitecore.Web.WebUtil.ParseUrlParameters(_urlParamsToParse);
            foreach(var nv in nameValueCollection)
                Item i = master.GetItem(nameValueCollection[nv.ToString()]);
                ltPageData.Text += i.Fields["Category Name"] + "<br/>";

Note: Name Lookup Value List field stores Item Id for each key

No comments:

Post a Comment