0

我有一个 FormView(绑定到 ObjectDataSource),其中包含一个 CheckBoxList,我想将它绑定到底层对象的单个属性,该属性是一个应用了 FlagsAttribute 的枚举。绑定到 SelectedValue 属性总是给我从列表中选择的第一个值作为属性的值。任何人都知道如何在不覆盖 Inserting 或 Updating 方法并手动获取复选框列表的值并将其填充到数据源的参数中的情况下解决此问题?下面是我正在尝试做的示例代码......

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

1 回答 1

2

您将不得不遍历Items集合并从那里建立枚举值。

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

于 2009-03-11T15:04:48.663 回答