Reputation: 19680
I'm working on a database in C# when I hit the display button I get an error:
Error:
Cannot bind to the property or column LastName on the DataSource. Parameter name: dataMember
Code:
private void Display_Click(object sender, EventArgs e)
{
Program.da2.SelectCommand = new SqlCommand("Select * From Customer", Program.cs);
Program.ds2.Clear();
Program.da2.Fill(Program.ds2);
customerDG.DataSource = Program.ds2.Tables[0];
Program.tblNamesBS2.DataSource = Program.ds.Tables[0];
customerfirstname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "FirstName"));
customerlastname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "LastName")); //Line Error occurs on.
}
Not sure what it means can anyone help, if I comment out the last two lines it will display properly.
Upvotes: 12
Views: 40028
Reputation: 175
Yet another possible reason for this (if you bind to an object) is that you try to bind to a field, not a property.
Upvotes: 2
Reputation: 13116
Another reason for this error is if the property you are binding to is private.
Upvotes: 5
Reputation: 1
I run into the same problem where I have to change the name in the table but I haven't change column names in the data binding file. solution was changing the names by replacing the changed name.
Upvotes: 0
Reputation: 1
I had the same problem and it was because the columns in both my tables had the same column names. For example:
Assets
;Property
and the second table name was Plants
;asset_number
;
It gave the error you describe above, but mine said asset_number
.Solution: I changed the column names in my table Plants
to asset_number1
and then it had no problem. (I did have to delete all my old columns in Plants
to redo the new columns.)
Upvotes: 0
Reputation: 366
You will also run into this error if you bind to a NULL object.
Upvotes: 15
Reputation: 707
it means your datatable is not finding column name LastName which is in your database..
in your case you filling your dataset with ds2..
Program.da2.Fill(Program.ds2);
and then you are binding your datasource to 'program' like this..
Program.tblNamesBS2.DataSource = Program.ds.Tables[0];
it should like this..
Program.tblNamesBS2.DataSource = Program.ds2.Tables[0];
because below line you are looking value from Program.tblNamesBS2 which is binded to 'ds' and that's why column are not ther in 'ds'.
customerfirstname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "FirstName"));
customerlastname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "LastName"));
Upvotes: 7