単一のフラグ列挙に複数の値がバインドされたCheckBoxList
-
10-07-2019 - |
質問
FlagsAttributeが適用されたEnumである基になるオブジェクトの単一のプロパティにバインドするCheckBoxListを含むFormView(ObjectDataSourceにバインドされています)があります。 SelectedValueプロパティにバインドすると、常にリストから最初に選択された値のみがプロパティの値として取得されます。 InsertingまたはUpdateingメソッドをオーバーライドし、チェックボックスリストの値を手動で取得してデータソースのパラメーターに詰め込むことなく、これを回避する方法を知っていますか?私がやろうとしていることの以下のサンプルコード...
<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
}
解決
Items
コレクションを反復処理し、そこから列挙値を作成する必要があります。
FlaggedEnumTypeConverter
のGoogleでの検索も役立つはずです。
所属していません StackOverflow