当我尝试使用 MS ACCESS 以 windows 形式填充我的数据网格时出现 "COMPLEX DATA BINDING ACCEPTS DATA SOURCE AS ILIST" 错误
Getting an "COMPLEX DATA BINDING ACCEPTS DATA SOURCE AS ILIST" error when i try to populate my data grid in windows form using MS ACCESS
我正在使用访问数据库。我已将连接和数据适配器作为全局变量。
在加载表单时,我的组合框填充了所有学生 ID。我正在尝试用我在组合框中选择其 ID 的学生的所有记录填充我的数据网格。但是,它给了我上述错误。我是比较新的,确实查看了一些文档,但我无法理解。
namespace P1
{
public partial class Form2 : Form
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =d:\DDBS.mdb");
OleDbDataAdapter adap = new OleDbDataAdapter("Select * from Student", @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =d:\DDBS.mdb");
DataSet d1 = new DataSet("Student");
private void Form2_Load(object sender, EventArgs e)
{
adap.Fill(d1, "Student");
con.Open();
int x = d1.Tables["Student"].Rows.Count - 1;
for (int i = 0; i < x; i++)
{
comboBox1.Items.Add(d1.Tables["Student"].Rows[i]["sid"]);
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbCommand ada = new OleDbCommand( "SELECT * FROM Student where sid= '" + comboBox1.SelectedItem + "'", con);
ada.ExecuteNonQuery();
dataGrid1.DataSource = ada;
MessageBox.Show("DONE");
}
}
}
您不能直接将数据适配器用作数据源,但您需要填充 List/datatable 然后分配它。这里最简单的方法是:
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable students = new DataTable();
da.Fill(students );
dataGrid1.DataSource = students ;
我正在使用访问数据库。我已将连接和数据适配器作为全局变量。 在加载表单时,我的组合框填充了所有学生 ID。我正在尝试用我在组合框中选择其 ID 的学生的所有记录填充我的数据网格。但是,它给了我上述错误。我是比较新的,确实查看了一些文档,但我无法理解。
namespace P1
{
public partial class Form2 : Form
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =d:\DDBS.mdb");
OleDbDataAdapter adap = new OleDbDataAdapter("Select * from Student", @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =d:\DDBS.mdb");
DataSet d1 = new DataSet("Student");
private void Form2_Load(object sender, EventArgs e)
{
adap.Fill(d1, "Student");
con.Open();
int x = d1.Tables["Student"].Rows.Count - 1;
for (int i = 0; i < x; i++)
{
comboBox1.Items.Add(d1.Tables["Student"].Rows[i]["sid"]);
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbCommand ada = new OleDbCommand( "SELECT * FROM Student where sid= '" + comboBox1.SelectedItem + "'", con);
ada.ExecuteNonQuery();
dataGrid1.DataSource = ada;
MessageBox.Show("DONE");
}
}
}
您不能直接将数据适配器用作数据源,但您需要填充 List/datatable 然后分配它。这里最简单的方法是:
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable students = new DataTable();
da.Fill(students );
dataGrid1.DataSource = students ;