CheckBoxList,其中多个值绑定到单个标志枚举

时间:2009-03-11 14:58:59

标签: asp.net .net-3.5 objectdatasource formview checkboxlist

我有一个FormView(绑定到ObjectDataSource),它包含一个CheckBoxList,我想将它绑定到底层对象的一个​​属性,该属性是一个应用了FlagsAttribute的Enum。绑定到SelectedValue属性总是从列表中选择第一个选定的值作为属性的值。任何人都知道如何解决这个问题而不重写插入或更新方法并手动获取复选框列表的值并将其填充到数据源的参数中?以下是我正在尝试做的示例代码...

<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 个答案:

答案 0 :(得分:2)

您必须遍历Items个集合并从那里构建枚举值。

在Google上搜索FlaggedEnumTypeConverter也应该会有所帮助。