2010-03-28 5 views

Répondre

0

La plus proche serait une propriété entière.

0

Les énumérations sont des constantes de compilation. Si les valeurs de la base de données ne changent pas à l'exécution, vous pouvez toujours utiliser un outil codegen pour générer les valeurs enum à partir de la base de données (au moment de la précompilation). Si elles vont changer, vous devrez peut-être juste faire une propriété de chaîne ou quelque chose de similaire, au lieu de l'Enum.

0

Vous devez écrire un 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; } 

} 
+0

hi.thnx pour la réponse! Les œuvres de code mais quand une valeur est sélectionnée dans la liste déroulante GetStandardValues ​​est appelée deux fois avec chaque clic ... whts va mal ?? – anay

+0

@anay, vous avez raison. Alors que cela se passe simplement au moment du design, ce n'est pas important. Quoi qu'il en soit, vous pouvez mettre en cache des données pour augmenter les performances. http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/4769c7b5-fd66-4490-8fa0-e1cecad80bce –

Questions connexes