2009-03-11 4 views
0

Ich habe ein FormView (gebunden an eine ObjectDataSource), das eine CheckBoxList enthält, die ich an eine einzelne Eigenschaft des zugrunde liegenden Objekts binden möchte, das ein Enum mit FlagsAttribute ist zu ihm. Die Bindung an die SelectedValue-Eigenschaft gibt mir immer nur den ERSTEN ausgewählten Wert aus der Liste als Wert der Eigenschaft. Wer weiß, wie man das umgehen kann, ohne die Einfüge- oder Aktualisierungsmethoden zu überschreiben und die Werte der Checkbox-Liste manuell abzurufen und in die Parameter der Datenquelle zu stopfen? Beispielcode unten von dem, was ich versuche zu tun ...CheckBoxList mit mehreren Werten, die an eine einzige Flag-Enumeration gebunden sind

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

hinter den Kulissen wird mein Objekt wie folgt erklärt ...

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

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

Antwort

1

Sie werden durch die Items Sammlungen iterieren haben und baue die Enum-Werte von dort auf. Eine Suche bei Google nach FlaggedEnumTypeConverter sollte auch hilfreich sein.

+0

Ja, das habe ich schon immer gemacht - dachte nur, dass es vielleicht einen besseren Weg gibt, von dem ich nichts wusste ... –

Verwandte Themen