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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top