質問

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での検索も役立つはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top