CheckBoxList com vários valores ligados a um único enum bandeira
-
10-07-2019 - |
Pergunta
Eu tenho um FormView (vinculado a um ObjectDataSource) que contém um CheckBoxList que eu gostaria de vincular a uma única propriedade do objeto subjacente que é um Enum com o FlagsAttribute aplicado a ele. Vinculativo para a propriedade SelectedValue sempre me dá apenas o primeiro valor selecionado da lista como o valor da propriedade. Alguém sabe como contornar isso sem substituir a inserir ou atualizar os métodos e obter manualmente os valores da lista de caixa de seleção e enchê-lo nos parâmetros da fonte de dados? código de exemplo abaixo do que eu estou tentando fazer ...
<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>
nos bastidores, meu objeto é declarado como este ...
public class MyClass
{
public MyEnum MyProperty { get; set; }
}
[Flags()]
public Enum MyEnum
{
ChoiceOne = 1,
ChoiceTwo = 2
}
Solução
Você terá que percorrer as coleções Items
e construir os valores enum de lá.
Uma busca no Google para FlaggedEnumTypeConverter
também deve ser útil.