c# - 当我尝试使用 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");
}
}
}
解决方案
您不能直接将数据适配器用作您的数据源,但您需要填充即列表/数据表,然后分配它。这里最简单的方法是:
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable students = new DataTable();
da.Fill(students );
dataGrid1.DataSource = students ;
推荐阅读
- ios - iOS:Jpeg 压缩增加了图像的大小(Swift)
- discord.js - Discord.js:如何在消息中发送 .txt 文件的内容?
- erlang - 无法在 MAC OSX Mojave 上安装 asdf erlang
- node.js - html-pdf:无法加载 PhantomJS 模块。使用 aws ec2 时,您必须使用“options.phantomPath”设置 PhantomJS 二进制文件的路径
- c# - Azure 数字孪生 API 无法使用教程中所述的 DefaultAzureCredential 身份验证方法
- java - 大型 jpa 删除的最佳垃圾收集器
- google-cloud-platform - 通过 Terraform 配置没有外部 IP 的 GCP VM 实例
- angular - 角度 e2e 测试不必要地等待
- php - 在新选项卡上打开图像
- javascript - 如何通过按帐户/ID/类别分组来对值求和?