我有此错误消息:
找不到列[Nom complet]
。
我的datagridview
是binded
的Access数据库,我有不同的表格。
从Sauvegarde
表格我选择了一些列,并希望使用combobox
列中的[Nom complet]
进行搜索过滤,但我收到以下消息:
找不到列[Nom complet]
。
我不知道问题出在哪里。
这是代码:
DataTable table = new DataTable();
public recherche()
{
InitializeComponent();
}
private void filldata()
{
OleDbConnection ccn = new
OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source='C:\mysource.accdb'");
string qur = "Select [N], [Code machine], [Type programme], [Nom
complet], [Motif], [Remarque] From [Sauvegarde]";
OleDbCommand ccmd = new OleDbCommand(qur, ccn);
DataTable table = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(ccmd);
da.Fill(table);
dataGridView1.DataSource = table;
}
private void recherche_Load(object sender, EventArgs e)
{
filldata();
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
DataView dv = new DataView(table);
if (comboBox2.SelectedItem.ToString()=="All")
{
dataGridView1.DataSource = table;
}
else
{
dv.RowFilter = string.Format("[Nom complet] LIKE '%{0}%'",
comboBox2.SelectedItem.ToString());
dataGridView1.DataSource = dv;
}
}
答案 0 :(得分:0)
现在更清楚了。您的问题是由于您从未初始化全局变量 table 而是创建本地变量。然后,当您尝试过滤全局变量时,您永远找不到列
DataTable table = new DataTable();
....
private void filldata()
{
.....
// This creates a local DataTable variable with the same name of the global one
// You are hiding the global and using the local one
// DataTable table = new DataTable();
// here instead you use the global variable
// So you are referencing the same variable in the SelectedIndexChanged handler
table = new DataTable();
....
}