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" />
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" />
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thanks perfect