我有一个以下的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抱怨
异常详细信息:System.InvalidCastException:Sepcified强制转换无效
即使使用DataBinder.Eval()
的代码有效,
我需要双向绑定,因此需要使用Bind()
。
<asp:CheckBox ID="isUploadedCheckBox2" runat="server"
Checked='<%# Convert.ToBoolean(
DataBinder.Eval(Container.DataItem, "IsUploaded"))) %>' />
如何使用Bind()
将0和1转换为布尔值?
[ANSWER] 我通过添加answer by Justin
中提到的新属性,通过部分类扩展了自动生成的类型答案 0 :(得分:7)
如果您愿意更改类,请在类的布尔值
上添加属性public bool IsUploadedBoolean
{
get { return IsUploaded != 0; }
set { IsUploaded = value ? 1 : 0; }
}
如果没有,您可能会成功使用TypeConverter:
答案 1 :(得分:3)
如何在您的类中添加属性进行转换?
public bool IsUploadedBool
{
get { return IsUploaded == 1; }
}
然后绑定到此IsUploadedBool
属性,而不是直接绑定到基础INT。
马克
答案 2 :(得分:2)
一种俗气的工作是使用带有列表项的下拉列表来产生相同的效果:
<asp:DropDownList ID="ddlBool" runat="server" SelectedValue= '<%# Bind("IsUploaded") %>'>
<asp:ListItem Text="True" Value="1" />
<asp:ListItem Text="False" Value="0" />
</asp:DropDownList>
答案 3 :(得分:2)
欲了解更多信息,请访问: http://dhondiyals.wordpress.com/2010/05/03/binding-checkbox-with-integer-value-in-gridviewtrick/
答案 4 :(得分:1)
如何(顺便说一下,我正在使用存储过程)
Aspx页面
<asp:CheckBox ID="social_facebook" runat="server" Checked='<%# Bind("True") %>' />Facebook
背后的代码
cmd.Parameters.Add("@p_facebook", SqlDbType.Bit).Value = social_facebook.Checked;
答案 5 :(得分:0)
解决方案:
嗨,我也在GridView中使用Ajax评级,我遇到了这个问题。在浏览了几个论坛后,我尝试了这个,它对我有用。我希望它对你有所帮助:
<%# Convert.ToInt32(Eval("EVALUATION")) %>
返回一个整数,因为你使用的Checked是一个整数。