2017-05-03 34 views
0

我將以下代碼用作宏來填充下拉列表控件。我遇到的問題是我在代碼中添加的空白選項不會在下拉列表中顯示爲選項。我不知道爲什麼。下拉列表數據源爲宏時的空選項

 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}"); 

回答

0

在新的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 
+0

修改線 'items.Insert(0,新的ListItem( 「 - 選擇一個 - 」,「「));' 結果選擇被呈現但在選項值作爲文本以及文本 – RadarBug

+0

然後在那裏放置一個無效值。在Kentico的下拉菜單,複選框列表,單選按鈕列表等等中創建一個包含值和文本的列表的基本設置說,值和文本需要在一行中用分號(;)分隔。如果不是,則單個值將用於文本和值。所以輸入一個值並顯示文本。 –

+0

我不想要一個無效值我想要一個空值。我已經閱讀了文檔,並且還發出了逗號分隔的字符串。沒有什麼似乎給了我一個空值的選項 – RadarBug