2017-05-03 2 views
0

J'utilise le code suivant en tant que macro pour remplir un contrôle de liste déroulante. Le problème que j'ai est que l'option vide que j'ajoute dans mon code n'est pas rendue en tant qu'option dans la liste déroulante. Je ne suis pas sûr pourquoi.Liste déroulante Option vide lorsque la source de données est une macro

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

MISE À JOUR

J'ai eu ce travail en retournant une chaîne délimitée au lieu

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

Répondre

0

Dans votre nouveau texte ListItem, placez quelque chose comme "- choisir un -". En utilisant une valeur et une chaîne vides, Kentico les supprime lors de la génération de la liste déroulante. Vous devriez pouvoir vous passer de placer une valeur invalide trop comme "-1".

MISE À JOUR
En fonction de vos réponses aux questions, je suggère d'utiliser une simple instruction SQL pour accomplir ce que vous cherchez par rapport à une méthode de macro personnalisée.

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

Modification de la ligne 'items.Insert (0, nouveau ListItem ("- sélectionner un -"," «));' résultats l'option RENDUES mais avec le texte de la valeur de l'option que ainsi que le texte – RadarBug

+0

Ensuite, placez une valeur non valide là aussi. La configuration de base de la création d'une liste avec des valeurs et du texte dans la liste déroulante, la liste de cases à cocher, la liste des boutons radio, etc. dans Kentico indique que la valeur et le texte doivent être séparés par un point-virgule (;) sur une seule ligne. Sinon, la valeur unique sera utilisée à la fois pour le texte et la valeur. Entrez donc une valeur et affichez le texte. –

+0

Je ne veux pas une valeur invalide Je veux une valeur vide. J'ai lu les documents et ai également émis une chaîne séparée par des virgules. Rien ne semble me donner une option avec une valeur vide – RadarBug