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
}
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top