2012-07-25 49 views
6

我工作在C#的数据库上,当我打的显示按钮,我得到一个错误:数据源错误:“不能绑定属性或列”

Error:
Cannot bind to the property or column LastName on the DataSource. Parameter name: dataMember

代码:

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. 
} 

不知道这意味着什么人可以帮助,如果我注释掉最后两行,它会正确显示。

+1

您是否检查过LastName是否输入正确? – Stig 2012-07-25 08:27:04

+2

这意味着该表中没有名为“LastName”的列。 – leppie 2012-07-25 08:27:06

+0

很奇怪,在我的SQL服务器管理器上,colum名称确实是“LastName”,就像我输入的一样。如果我只是注释掉它的最后一行,FirstName是正确的,我用相同的方式拼写LastName。 – KHAN 2012-07-25 08:31:07

回答

6

这意味着你的数据表上没有找到列名姓氏这是你的数据库..

在你的情况填充DS2数据集

..

Program.da2.Fill(Program.ds2); 

,然后你要绑定您的数据源像这样的 '纲要' ..

Program.tblNamesBS2.DataSource = Program.ds.Tables[0]; 

应该喜欢这个..

Program.tblNamesBS2.DataSource = Program.ds2.Tables[0]; 

因为在下面,您正在从Program.tblNamesBS2看到绑定到'ds' 的值,这就是为什么column不在'ds'中的原因。

customerfirstname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "FirstName"));  
    customerlastname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "LastName")); 
+0

这是为什么?它可以找到FirstName,而LastName拼写正确。 – KHAN 2012-07-25 08:37:17

5

如果绑定到NULL对象,也会遇到此错误。

0

我有同样的问题,这是因为我的表中的列具有相同的列名称。例如:

  1. 我的数据库名是Assets;
  2. 第一个表名是Property,第二个表名是Plants;
  3. 两个表中的第一列名称分别为asset_number; 它给出了你上面描述的错误,但我的说是asset_number

解决方法:我将表Plants中的列名更改为asset_number1然后它没有问题。 (我确实必须删除Plants中的所有旧列以重新创建新列。)