Link to home
Start Free TrialLog in
Avatar of sbornstein2
sbornstein2

asked on

ASP.Net/C# - Checkbox Databinder Specified Cast Invalid? Bool?

Hello all.  I have a static datatable where I set the datacolumn "W9" to a Boolean datatype but my ASCX code is still throwing a cast error, any idea?  My code is in the snippet here.  The W9 column is the one I am testing with to get this to work.
code behind: Datatable code:
  private DataTable Contributors
    {
        get
        {
            //object obj = this.Session["Employees"];
            //if ((!(obj == null)))
            //{
            //    return ((DataTable)(obj));
            //}
            //DataTable myDataTable = new DataTable();
            //myDataTable = GetDataTable("SELECT * FROM Employees");
            //this.Session["Employees"] = myDataTable;
            //return myDataTable;
            object obj = this.Session["Contributors"];
            if ((!(obj == null)))
            {
                return ((DataTable)(obj));
            }
 
            System.Data.DataTable dt;
            dt = new DataTable();
 
            // Columns
            DataColumn ContributorID;
            DataColumn FirstName;
            DataColumn MiddleInitial;
            DataColumn LastName;
            DataColumn FullName;
            DataColumn Email;
            DataColumn DisplayName;
            DataColumn DisplayBookWebsite;
            DataColumn ContributorRole;
            DataColumn AddressLine1;
            DataColumn AddressLine2;
            DataColumn City;
            DataColumn State;
            DataColumn PostalCode;
            DataColumn Country;
            DataColumn CitizenShipType;
            DataColumn RoyaltyRecipient;
            DataColumn RoyaltyPayableTo;
            DataColumn SSNTaxID;
            DataColumn EFT;
            DataColumn W9;
            
            // Initialize the columns
            ContributorID = new DataColumn("ContributorID");
            FirstName = new DataColumn("FirstName");
            MiddleInitial = new DataColumn("MiddleInitial");
            LastName = new DataColumn("LastName");
            FullName = new DataColumn("FullName");
            Email = new DataColumn("Email");
            DisplayName = new DataColumn("DisplayName");
            DisplayBookWebsite = new DataColumn("DisplayBookWebsite");
            ContributorRole = new DataColumn("ContributorRole");
            AddressLine1 = new DataColumn("AddressLine1");
            AddressLine2 = new DataColumn("AddressLine2");
            City = new DataColumn("City");
            State = new DataColumn("State");
            PostalCode = new DataColumn("PostalCode");
            Country = new DataColumn("Country");
            CitizenShipType = new DataColumn("CitizenShipType");
            RoyaltyRecipient = new DataColumn("RoyaltyRecipient");
            RoyaltyPayableTo = new DataColumn("RoyaltyPayableTo");
            SSNTaxID = new DataColumn("SSNTaxID");
            EFT = new DataColumn("EFT");
            W9 = new DataColumn("W9");
            W9.DataType = System.Type.GetType("System.Boolean");
 
            // Add columns
            dt.Columns.Add(ContributorID);
            dt.Columns.Add(FirstName);
            dt.Columns.Add(MiddleInitial);
            dt.Columns.Add(LastName);
            dt.Columns.Add(FullName);
            dt.Columns.Add(Email);
            dt.Columns.Add(DisplayName);
            dt.Columns.Add(DisplayBookWebsite);
            dt.Columns.Add(ContributorRole);
            dt.Columns.Add(AddressLine1);
            dt.Columns.Add(AddressLine2);
            dt.Columns.Add(City);
            dt.Columns.Add(State);
            dt.Columns.Add(PostalCode);
            dt.Columns.Add(Country);
            dt.Columns.Add(CitizenShipType);
            dt.Columns.Add(RoyaltyRecipient);
            dt.Columns.Add(RoyaltyPayableTo);
            dt.Columns.Add(SSNTaxID);
            dt.Columns.Add(EFT);
            dt.Columns.Add(W9);
 
            //Add DataRows to DataTable
            DataRow myRow;
            myRow = dt.NewRow();
            myRow["ContributorID"] = 123;
            myRow["FirstName"] = "Sean";
            myRow["MiddleInitial"] = "";
            myRow["LastName"] = "Bornstein";
            myRow["FullName"] = "Sean Bornstein";
            myRow["Email"] = "sbornstein@authorhouse.com";
            myRow["DisplayName"] = "";
            myRow["DisplayBookWebsite"] = false;
            myRow["ContributorRole"] = "Contributor";
            myRow["AddressLine1"] = "12 Water Road";
            myRow["AddressLine2"] = "";
            myRow["City"] = "Scituate";
            myRow["State"] = "MA";
            myRow["PostalCode"] = "02066";
            myRow["Country"] = "USA";
            myRow["CitizenshipType"] = "US Citizen";
            myRow["RoyaltyRecipient"] = true;
            myRow["RoyaltyPayableTo"] = "Sean Bornstein";
            myRow["SSNTaxID"] = "337665482";
            myRow["EFT"] = false;
            myRow["W9"] = true;
            dt.Rows.Add(myRow);
 
            myRow = dt.NewRow();
            myRow["ContributorID"] = 234;
            myRow["FirstName"] = "Jack";
            myRow["MiddleInitial"] = "";
            myRow["LastName"] = "Flash";
            myRow["FullName"] = "Jack Flash";
            myRow["Email"] = "jflash@authorhouse.com";
            myRow["DisplayName"] = "";
            myRow["DisplayBookWebsite"] = true;
            myRow["ContributorRole"] = "Agent";
            myRow["AddressLine1"] = "5 Waterhill Lane";
            myRow["AddressLine2"] = "";
            myRow["City"] = "South Boston";
            myRow["State"] = "MA";
            myRow["PostalCode"] = "02127";
            myRow["Country"] = "USA";
            myRow["CitizenshipType"] = "US Citizen";
            myRow["RoyaltyRecipient"] = false;
            myRow["RoyaltyPayableTo"] = "";
            myRow["SSNTaxID"] = "";
            myRow["EFT"] = false;
            myRow["W9"] = true;
            dt.Rows.Add(myRow);
 
            myRow = dt.NewRow();
            myRow["ContributorID"] = 789;
            myRow["FirstName"] = "Leopold";
            myRow["MiddleInitial"] = "";
            myRow["LastName"] = "Butters";
            myRow["FullName"] = "Leopold Butters";
            myRow["Email"] = "butters@authorhouse.com";
            myRow["DisplayName"] = "";
            myRow["DisplayBookWebsite"] = true;
            myRow["ContributorRole"] = "Co-Author";
            myRow["AddressLine1"] = "33 South Park Rd";
            myRow["AddressLine2"] = "";
            myRow["City"] = "South Park";
            myRow["State"] = "IN";
            myRow["PostalCode"] = "47403";
            myRow["Country"] = "USA";
            myRow["CitizenshipType"] = "US Citizen";
            myRow["RoyaltyRecipient"] = true;
            myRow["RoyaltyPayableTo"] = "Butters";
            myRow["SSNTaxID"] = "222989876";
            myRow["EFT"] = true;
            myRow["W9"] = false;
            dt.Rows.Add(myRow);
 
            myRow = dt.NewRow();
            myRow["ContributorID"] = 908;
            myRow["FirstName"] = "Eric";
            myRow["MiddleInitial"] = "";
            myRow["LastName"] = "Cartman";
            myRow["FullName"] = "Eric Cartman";
            myRow["Email"] = "cartman@authorhouse.com";
            myRow["DisplayName"] = "respect authority";
            myRow["DisplayBookWebsite"] = true;
            myRow["ContributorRole"] = "Contributor";
            myRow["AddressLine1"] = "865 South Park Rd";
            myRow["AddressLine2"] = "";
            myRow["City"] = "South Park";
            myRow["State"] = "IN";
            myRow["PostalCode"] = "47403";
            myRow["Country"] = "USA";
            myRow["CitizenshipType"] = "US Citizen";
            myRow["RoyaltyRecipient"] = true;
            myRow["RoyaltyPayableTo"] = "Kitty";
            myRow["SSNTaxID"] = "111345678";
            myRow["EFT"] = false;
            myRow["W9"] = true;
            dt.Rows.Add(myRow);
 
            myRow = dt.NewRow();
            myRow["ContributorID"] = 227;
            myRow["FirstName"] = "Stan";
            myRow["MiddleInitial"] = "";
            myRow["LastName"] = "Marsh";
            myRow["FullName"] = "Stan Marsh";
            myRow["Email"] = "smarsh@authorhouse.com";
            myRow["DisplayName"] = "";
            myRow["DisplayBookWebsite"] = true;
            myRow["ContributorRole"] = "Contributor";
            myRow["AddressLine1"] = "211 South Park Rd";
            myRow["AddressLine2"] = "";
            myRow["City"] = "South Park";
            myRow["State"] = "IN";
            myRow["PostalCode"] = "47403";
            myRow["Country"] = "USA";
            myRow["CitizenshipType"] = "US Citizen";
            myRow["RoyaltyRecipient"] = false;
            myRow["RoyaltyPayableTo"] = "";
            myRow["SSNTaxID"] = "";
            myRow["EFT"] = false;
            myRow["W9"] = false;
            dt.Rows.Add(myRow);
 
            myRow = dt.NewRow();
            myRow["ContributorID"] = 999;
            myRow["FirstName"] = "Yoggi";
            myRow["MiddleInitial"] = "";
            myRow["LastName"] = "Bear";
            myRow["FullName"] = "Yoggi Bear";
            myRow["Email"] = "ybear@authorhouse.com";
            myRow["DisplayName"] = "";
            myRow["DisplayBookWebsite"] = false;
            myRow["ContributorRole"] = "Contributor";
            myRow["AddressLine1"] = "33 Yellowstonr Park";
            myRow["AddressLine2"] = "";
            myRow["City"] = "Yellowstone";
            myRow["State"] = "NH";
            myRow["PostalCode"] = "23223";
            myRow["Country"] = "USA";
            myRow["CitizenshipType"] = "US Citizen";
            myRow["RoyaltyRecipient"] = false;
            myRow["RoyaltyPayableTo"] = "";
            myRow["SSNTaxID"] = "";
            myRow["EFT"] = false;
            myRow["W9"] = false;
            dt.Rows.Add(myRow);
 
            this.Session["Contributors"] = dt;
 
            return dt;
        }
    }
 
ASCX Code:
<asp:CheckBox ID="cbxW9" Checked='<%# (DataBinder.Eval(Container, "DataItem.W9") is DBNull ?false:Eval("W9")) %>'  runat="server" />

Open in new window

Avatar of ajitha75
ajitha75
Flag of India image

W9 column seems to be fine. The problem i think is with EFT and other columns which are declared as string datatype
Try this:
<asp:CheckBox ID="cbxW9" Checked='<%# (DataBinder.Eval(Container, "DataItem.W9")=DBNull.Value ?false:(bool)Eval("W9")) %>'  runat="server" />

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of prairiedog
prairiedog
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of sbornstein2
sbornstein2

ASKER

thanks perfect