下拉列表数据源为宏时的空选项
问题描述:
我将以下代码用作宏来填充下拉列表控件。我遇到的问题是我在代码中添加的空白选项不会在下拉列表中显示为选项。我不知道为什么。下拉列表数据源为宏时的空选项
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;
}
UPDATE
我通过返回分隔字符串,而不是
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}");
答
在新的ListItem
文字得到了这个工作,把类似的东西 “ - 选择一个 - ”。使用空值和字符串,Kentico在生成下拉列表时将其去掉。你应该能够放弃一个无效的值,比如“-1”。
UPDATE
根据您的问题的答案,我建议使用一个简单的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
修改线 'items.Insert(0,新的ListItem( “ - 选择一个 - ”,““));' 结果选择被呈现但在选项值作为文本以及文本 – RadarBug
然后在那里放置一个无效值。在Kentico的下拉菜单,复选框列表,单选按钮列表等等中创建一个包含值和文本的列表的基本设置说,值和文本需要在一行中用分号(;)分隔。如果不是,则单个值将用于文本和值。所以输入一个值并显示文本。 –
我不想要一个无效值我想要一个空值。我已经阅读了文档,并且还发出了逗号分隔的字符串。没有什么似乎给了我一个空值的选项 – RadarBug