当我尝试使用 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 ;