CheckBoxList con múltiples valores vinculados a una sola enumeración de bandera
-
10-07-2019 - |
Pregunta
Tengo un FormView (vinculado a un ObjectDataSource) que contiene una CheckBoxList que me gustaría vincular a una sola propiedad del objeto subyacente que es un Enum con el FlagsAttribute aplicado. El enlace a la propiedad SelectedValue siempre me da solo el PRIMER valor seleccionado de la lista como el valor de la propiedad. ¿Alguien sabe cómo solucionar esto sin anular los métodos de inserción o actualización y obtener manualmente los valores de la lista de verificación y rellenarlos en los parámetros de la fuente de datos? Ejemplo de código a continuación de lo que estoy tratando de hacer ...
<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>
detrás de escena, mi objeto se declara así ...
public class MyClass
{
public MyEnum MyProperty { get; set; }
}
[Flags()]
public Enum MyEnum
{
ChoiceOne = 1,
ChoiceTwo = 2
}
Solución
Tendrá que recorrer las colecciones Items
y construir los valores de enumeración a partir de ahí.
Una búsqueda en Google de FlaggedEnumTypeConverter
también debería ser útil.