How to make lookup field to retrieve the field value rather than item name

For example, you want to refer to the Country items from your custom lookup field:

---home -------countries ----------------Ukraine ----------------Denmark ----------------Germany ----------------USA ----------------Spain

If you specify just a source field of your template field as /content/countries, you will get this field populated with the item names.
But there is also a possibility to retrieve the field values of these items rather that the names.
Let’s assume that these items are based on the Country template that defines a single field named ISO:
If you want to have a custom lookup field populated with the ISO field values instead of the item’s name, the following steps should be completed:

Add the custom lookup field named List to e.g. Document template:
Extend the Template field template by adding a field named Field Name which will define the name of the field to fill into the lookup dropdown list:
Fill the newly created field with the ISO value – name of the field to retrieve the values from:
Now you have to customize the source code of your custom lookup field.

Here is the full source code of the custom lookup field. The instructions about how to add a custom field to Sitecore shell can be found here:

using System;
using System.Text;

using Sitecore;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Shell.Applications.ContentEditor;
using Sitecore.Web.UI.Sheer;
using Sitecore.Web.UI.HtmlControls;
using Sitecore.Web.UI.HtmlControls.Data;

namespace Sitecore.Shell.Applications.ContentEditor
{ public class CustomLookup : Lookup
{ protected override void OnLoad(EventArgs args)

if (!Sitecore.Context.ClientPage.IsEvent)


Item contextItem = Sitecore.Context.ContentDatabase.Items[this.ItemID];

foreach(TemplateFieldItem tfItem in contextItem.Template.OwnFields)


if(tfItem.Source == this.Source)


FieldName = tfItem.InnerItem.Fields["Field Name"].Value;




} } }[