首页 > 解决方案 > 当我尝试使用 MS ACCESS 以 Windows 形式填充我的数据网格时出现“复杂数据绑定接受数据源作为 ILIST”错误

问题描述

我正在使用访问数据库。我已将连接和数据适配器设为全局变量。加载表格时,我的组合框会填充所有学生 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");
        }
    }
}

标签: c#datagridms-access-2010

解决方案


您不能直接将数据适配器用作您的数据源,但您需要填充即列表/数据表,然后分配它。这里最简单的方法是:

OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable students = new DataTable();
da.Fill(students );
dataGrid1.DataSource = students ;

推荐阅读