2009-03-11 6 views
0

J'ai un FormView (lié à un ObjectDataSource) qui contient un CheckBoxList que je voudrais lier à une seule propriété de l'objet sous-jacent qui est un Enum avec le FlagsAttribute appliqué à lui. La liaison à la propriété SelectedValue me donne toujours juste la PREMIÈRE valeur sélectionnée dans la liste comme valeur de la propriété. Quelqu'un sait-il comment contourner cela sans surcharger les méthodes d'insertion ou de mise à jour et en obtenant manuellement les valeurs de la liste de cases à cocher et en les insérant dans les paramètres de la source de données? Exemple de code ci-dessous de ce que je suis en train de faire ...CheckBoxList avec plusieurs valeurs liées à un seul drapeau enum

<asp:FormView runat="server" ID="MyFormView" DataSourceID="MyDataSource"> 
    <InsertItemTempate> 
     <asp:CheckBoxList runat="server" ID="MyCbl" SelectedValue='<%# Bind("MyProperty") %>'> 
     <asp:ListItem Text="Choice 1" Value="ChoiceOne"></asp:ListItem> 
     <asp:ListItem Text="Choice 2" Value="ChoiceTwo"></asp:ListItem> 
     </asp:CheckBoxList> 
    </InsertItemTemplate> 
</asp:FormView> 
<asp:ObjectDataSource runat="server" ID="MyDataSource" TypeName="MyClass" ...></asp:ObjectDataSource> 

dans les coulisses, mon but est déclarée comme ça ...

public class MyClass 
{ 
    public MyEnum MyProperty { get; set; } 
} 

[Flags()] 
public Enum MyEnum 
{ 
    ChoiceOne = 1, 
    ChoiceTwo = 2 
} 

Répondre

1

Vous devrez parcourir les collections Items et construire les valeurs enum à partir de là.

Une recherche sur Google pour FlaggedEnumTypeConverter devrait aussi être utile.

+0

ouais, c'est ce que j'ai toujours fait - je pensais que peut-être il y avait un meilleur moyen que je ne connaissais pas ... –

Questions connexes