J'essaie de créer une zone de texte personnalisée avec une propriété de type enum (comme textmode). Les valeurs de l'enum proviendront de la base de données. Mais les enums ne peuvent pas être dynamiques, y a-t-il une autre solution ?
Réponses
Trop de publicités?Les Enums sont des constantes de compilation. Si les valeurs de la base de données ne changent pas au moment de l'exécution, vous pouvez toujours utiliser un outil de codage pour générer les valeurs des enums à partir de la base de données (au moment de la précompilation). Si elles sont amenées à changer, vous devrez peut-être utiliser une propriété de type String ou quelque chose de similaire, au lieu de l'Enum.
Vous devez écrire un texte personnalisé TypeConverter
pour accomplir cette tâche.
public class MyItemsConverter : TypeConverter
{
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
StringCollection values = new StringCollection();
// Connect to database and read values.
return new StandardValuesCollection(values);
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return (context != null);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}
public class MyControl : WebControl
{
[TypeConverter(typeof(MyItemsConverter))]
public string MyItem { get; set; }
}