Question

J'ai un FormView (lié à un ObjectDataSource) qui contient un CheckBoxList que je voudrais lier à une propriété unique de l'objet sous-jacent qui est un Enum avec le FlagsAttribute qui lui est appliqué. La liaison à la propriété SelectedValue me donne toujours la valeur FIRST sélectionnée dans la liste en tant que valeur de la propriété. Quelqu'un sait comment contourner ce problème sans remplacer les méthodes Insertion ou Mise à jour, obtenir manuellement les valeurs de la liste de cases à cocher et les insérer dans les paramètres de la source de données? Exemple de code ci-dessous de ce que j'essaie de faire ...

<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 objet est déclaré comme ça ...

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

[Flags()]
public Enum MyEnum
{
   ChoiceOne = 1,
   ChoiceTwo = 2
}
Était-ce utile?

La solution

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

Une recherche sur Google pour FlaggedEnumTypeConverter devrait également être utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top