我有一个以下ListView项模板,我试图将整数值绑定到CheckBox的Checked属性.
IsUploaded值仅包含0和1 …
<asp:ListView ID="trustListView" runat="server"> <ItemTemplate> <asp:CheckBox ID="isUploadedCheckBox" runat="server" Checked='<%# Bind("IsUploaded") %>' /> </ItemTemplate> </asp:ListView>
但ASP.NET抱怨说
Exception Details: System.InvalidCastException: Sepcified cast is not valid
即使使用DataBinder.Eval()的代码有效,
我需要有一个双向绑定,因此需要使用Bind().
<asp:CheckBox ID="isUploadedCheckBox2" runat="server" Checked='<%# Convert.ToBoolean( DataBinder.Eval(Container.DataItem,"IsUploaded"))) %>' />
如何使用Bind()将0和1转换为布尔值?
解决方法
如果您愿意更改类,请在类的布尔值上添加属性
public bool IsUploadedBoolean { get { return IsUploaded != 0; } set { IsUploaded = value ? 1 : 0; } }
如果没有,您可能会成功使用TypeConverter:
>创建一个自定义TypeConverter,它将处理0和1到布尔转换
>将TypeConverterAttribute粘贴在IsUploaded属性上,将.NET指向您的自定义类型转换器.