ASP.NET Binding integer to CheckBox's Checked field

16,990

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:

  1. Create a custom TypeConverter which will handle 0 and 1 to boolean conversions
  2. 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;
Share:
16,990
dance2die
Author by

dance2die

I like to read, and build(&amp; break?) stuff. Currently helping folks out on r/reactjs &amp; DEV#react. Reach out to me @dance2die &amp; check out my blog on sung.codes

Updated on June 05, 2022

Comments

  • dance2die
    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 use Bind().

    <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
    dance2die over 14 years
    @marc_s: You meant double "==" not "=" :)
  • dance2die
    dance2die over 14 years
    Sorry scott but I have to stick to "CheckBox" for my particular case. But thank you for giving me an insight on this.
  • dance2die
    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.