ASP.NET Binding integer to CheckBox's Checked field
Solution 1
If you're willing to change the class, add a property on the class that's a boolean
public bool IsUploadedBoolean
{
get { return IsUploaded != 0; }
set { IsUploaded = value ? 1 : 0; }
}
If not, you may have success with a TypeConverter:
- Create a custom TypeConverter which will handle 0 and 1 to boolean conversions
- Stick the TypeConverterAttribute on the IsUploaded property to direct .NET to your custom typeconverter.
Solution 2
How about adding a property to your class which does the conversion?
public bool IsUploadedBool
{
get { return IsUploaded == 1; }
}
and then bind to this IsUploadedBool
property instead of directly to the underlying INT.
Marc
Solution 3
Kind of a cheesy work around would be to use a drop down list with list items to give the same effect:
<asp:DropDownList ID="ddlBool" runat="server" SelectedValue= '<%# Bind("IsUploaded") %>'>
<asp:ListItem Text="True" Value="1" />
<asp:ListItem Text="False" Value="0" />
</asp:DropDownList>
Solution 4
For more information visit: http://dhondiyals.wordpress.com/2010/05/03/binding-checkbox-with-integer-value-in-gridviewtrick/
Solution 5
How about (btw i am using a stored procedure)
Aspx page
<asp:CheckBox ID="social_facebook" runat="server" Checked='<%# Bind("True") %>' />Facebook
Code behind
cmd.Parameters.Add("@p_facebook", SqlDbType.Bit).Value = social_facebook.Checked;
dance2die
I like to read, and build(& break?) stuff. Currently helping folks out on r/reactjs & DEV#react. Reach out to me @dance2die & check out my blog on sung.codes
Updated on June 05, 2022Comments
-
dance2die almost 2 years
I have a following ListView item template, in which I am trying to bind integer value to
Checked
property of CheckBox.IsUploaded
value contains only 0 and 1...<asp:ListView ID="trustListView" runat="server"> <ItemTemplate> <asp:CheckBox ID="isUploadedCheckBox" runat="server" Checked='<%# Bind("IsUploaded") %>' /> </ItemTemplate> </asp:ListView>
But ASP.NET complains that
Exception Details: System.InvalidCastException: Sepcified cast is not valid
Even though following code using
DataBinder.Eval()
works,
I need to have a 2-way binding, thus need to useBind()
.<asp:CheckBox ID="isUploadedCheckBox2" runat="server" Checked='<%# Convert.ToBoolean( DataBinder.Eval(Container.DataItem, "IsUploaded"))) %>' />
How can I convert 0's and 1's to boolean using
Bind()
?
[ANSWER] I have extended auto-generated type through partial class by adding a new property mentioned in the answer by Justin
-
dance2die over 14 years@marc_s: You meant double "==" not "=" :)
-
dance2die over 14 yearsSorry scott but I have to stick to "CheckBox" for my particular case. But thank you for giving me an insight on this.
-
dance2die over 14 years@kscott: Would you be able to make change to your answer? (add a dot or etc.) so that I can upvote your answer? I consider your answer to be a valid option for my case as well. Thanks.