Раскрывающийся список Пустая опция, если источником данных является макрос

Я использую следующий код в качестве макроса для заполнения раскрывающегося списка. У меня проблема в том, что пустая опция, которую я добавляю в свой код, не отображается как опция в раскрывающемся списке. Я не уверен, почему.

       private object ListOfRegions(EvaluationContext context)
    {
        var regions = CustomTableItemProvider.GetItems(CustomTableClassNames.CountryRegionMapping).WhereNotNull("CountryCode").Column("RegionName").Distinct().OrderByAscending("RegionName");
        var items = regions.ToList().Select(r => new ListItem(r.GetStringValue("RegionName", string.Empty))).ToList();
        items.Insert(0, new ListItem(" ", " "));
        return items;
    }

ОБНОВИТЬ

Я получил это, вернув вместо этого строку с разделителями

var regions = CustomTableItemProvider.GetItems(CustomTableClassNames.CountryRegionMapping).WhereNotNull("CountryCode").Column(columnName).Distinct().OrderByAscending(columnName);
var items = regions.ToList().Select(r => new ListItem(r.GetStringValue(columnName, string.Empty))).ToList();
items.Insert(0, new ListItem("Please select ...", string.Empty));
return items.Select(i => $"{i.Value};{i.Text}");

person RadarBug    schedule 03.05.2017    source источник


Ответы (1)


В новом тексте ListItem поместите что-то вроде "-- выберите один --". Используя пустое значение и строку, Kentico удаляет их при создании раскрывающегося списка. Вы должны быть в состоянии уйти от размещения недопустимого значения, например "-1".

ОБНОВЛЕНИЕ
Основываясь на ваших ответах на вопросы, я бы предложил использовать простую инструкцию sql для выполнения того, что вы ищете, а не метод пользовательского макроса.

SELECT '' AS Value, '-- select one --' AS [Text]
UNION
SELECT DISTINCT ItemText AS Value, ItemText AS [Text]
FROM customtable_SampleTable
WHERE ItemText IS NOT NULL
person Brenden Kehren    schedule 03.05.2017
comment
Изменение строки на items.Insert(0, new ListItem("-- select one --", " ")); приводит к отображению параметра, но с текстом в значении параметра, а также с текстом - person RadarBug; 03.05.2017
comment
Затем также поместите туда недопустимое значение. Базовая настройка создания списка со значениями и текстом в раскрывающемся списке, списке флажков, списке переключателей и т. Д. В Kentico говорит, что значение и текст должны быть разделены точкой с запятой ( ; ) в одной строке. В противном случае одно значение будет использоваться как для текста, так и для значения. Поэтому введите значение и отобразите текст. - person Brenden Kehren; 03.05.2017
comment
Мне не нужно недопустимое значение, мне нужно пустое значение. Я прочитал документы и также выделил строку, разделенную запятыми. Кажется, ничто не дает мне вариант с пустым значением - person RadarBug; 03.05.2017
comment
Затем используйте простой SQL-запрос вместо написания для него кода C#. Вы можете сделать это без проблем, используя оператор UNION. SELECT '' AS Value, '-- select one --' AS [Text] UNION SELECT DISTINCT ItemText AS Value, ItemText AS [Text] FROM customtable_SampleTable WHERE ItemText IS NOT NULL - person Brenden Kehren; 03.05.2017
comment
Я ценю ваши быстрые ответы, но есть веская причина, по которой мне нужно, чтобы это (и другие примеры) было доставлено с помощью макроса. - person RadarBug; 03.05.2017
comment
Понял @RadarBug, тогда вам придется ввести недопустимое значение И текст, чтобы макрос обработал его так, как вы хотите. - person Brenden Kehren; 03.05.2017