Domanda

Ho un FormView (associato a un ObjectDataSource) che contiene un CheckBoxList che vorrei associare a una singola proprietà dell'oggetto sottostante che è un Enum con FlagsAttribute applicato ad esso. L'associazione alla proprietà SelectedValue mi dà sempre solo il PRIMO valore selezionato dall'elenco come valore della proprietà. Qualcuno sa come aggirare questo problema senza sovrascrivere i metodi di inserimento o aggiornamento e ottenere manualmente i valori dell'elenco delle caselle di controllo e inserirli nei parametri dell'origine dati? Codice di esempio di seguito di ciò che sto cercando di fare ...

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

dietro le quinte, il mio oggetto è dichiarato così ...

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

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

Soluzione

Dovrai scorrere le raccolte Items e costruire i valori enum da lì.

Anche una ricerca su FlaggedEnumTypeConverter su Google dovrebbe essere utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top