Ivan,
You're seeing code, because it is specified in your drop down to use code as a value, so this is what is stored into a database.
In order to get display name you need to get display name from a custom table by code and substitute code with it.
How to achieve this? - I'm not sure this will work with Contacts interface, but this is the approach that works with custom modules: you need to implement extender method that will translate a code into display name. Here is code sample from documentation:
/// <summary>
/// Handles the Unigrid control's OnExternalDataBound event.
/// </summary>
private object Control_OnExternalDatabound(object sender, string sourceName, object parameter)
{
if (sourceName == "officehours")
{
// Gets the ID of the time zone assigned to the office
int timeZoneId = ValidationHelper.GetInteger(parameter, 0);
// Loads a TimeZoneInfo object representing the office's time zone
CMS.Globalization.TimeZoneInfo timeZone = TimeZoneInfoProvider.GetTimeZoneInfo(timeZoneId);
// Gets the current time, converted to the office's time zone
DateTime currentDateTime =
TimeZoneHelper.ConvertTimeZoneDateTime(DateTime.UtcNow, TimeZoneInfoProvider.GetTimeZoneInfo("GMT_UTC"), timeZone, false);
// Formats the office's local time into a string
string officeLocalTime = "(Local time: " + currentDateTime.ToString("h:mm tt") + ")";
// Checks whether the office's local time is within office hours and displays the result in the column
if (currentDateTime.TimeOfDay < new TimeSpan(9, 0, 0) || currentDateTime.TimeOfDay > new TimeSpan(17, 0, 0))
{
return "<span class=\"StatusDisabled\">" + ResHelper.GetString("general.no") + "</span> " + officeLocalTime;
}
else
{
return "<span class=\"StatusEnabled\">" + ResHelper.GetString("general.yes") + "</span> " + officeLocalTime;
}
}
return parameter;
}
More detail on implementation could be found here.