我有一个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
}
答案 0 :(得分:2)
您必须遍历Items
个集合并从那里构建枚举值。
在Google上搜索FlaggedEnumTypeConverter
也应该会有所帮助。