2009-03-11 4 views
0

FlagsAttribute가 적용된 Enum 인 기본 객체의 단일 속성에 바인딩하려는 CheckBoxList가 포함 된 FormView (ObjectDataSource에 바인딩 됨)가 있습니다. 그것에. SelectedValue 속성에 바인딩하면 항상 목록의 첫 번째 선택된 값이 속성 값으로 사용됩니다. 누구나 Inserting 또는 Updating 메소드를 오버라이드하지 않고 수동으로 체크 박스 목록의 값을 가져 와서 데이터 소스의 매개 변수에 채우지 않고이 문제를 해결하는 방법을 알고 계십니까? 내가 할 노력하고있어의 아래 샘플 코드 ... 배후하나의 플래그 enum에 여러 값이 바인딩 된 CheckBoxList

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

은 나의 목적은

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

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

답변

1

당신은 Items 컬렉션을 반복해야합니다 ... 다음과 같이 선언 거기에서 열거 형 값을 빌드하십시오.

Google에서 FlaggedEnumTypeConverter으로 검색하면 도움이됩니다.

+0

네, 그게 제가 항상 해왔 던 것입니다. 그저 내가 알지 못했던 더 나은 방법이 있다고 생각했을 것입니다 ... –

관련 문제