问题描述:
我使用了两个datagridview控件用于显示两张主从表,分别是:读者表和借书表。
代码如下:
command.CommandText = "select * from 读者表 ";
adapter.SelectCommand = command;
adapter.Fill(ds ); command.CommandText = "select * from 借书表 ";
adapter.SelectCommand = command;
adapter.Fill(ds);
//下面一行代码报错
DataRelation relation = new DataRelation("FK_读者表_借书表", ds.Tables["读者表"].Columns["借书证号"], ds.Tables["借书表"].Columns["借书证号"]);
ds.Relations.Add(relation);
BindingSource bs_读者表= new BindingSource(); // 创建绑定源
BindingSource bs_借书表 = new BindingSource();
bs_读者表.DataSource = ds.Tables["读者表"]; // 绑定到数据源——主表 bs_借书表.DataSource = ds.Relations["FK_读者表_借书表"]; // 绑定到关系——从表,注意:区分大小写 dataGridView2.DataSource = bs_读者表; // DataGridView 显示
dataGridView3.DataSource = bs_借书表;
在运行的时候老是出现“为将对象引用设置为对象实例”,请各位高手帮帮忙,在此感激不尽!!(错误行已用红色字体显示)如果代码中还有其他问题,请帮忙指出来,谢谢!!!!
我使用了两个datagridview控件用于显示两张主从表,分别是:读者表和借书表。
代码如下:
command.CommandText = "select * from 读者表 ";
adapter.SelectCommand = command;
adapter.Fill(ds ); command.CommandText = "select * from 借书表 ";
adapter.SelectCommand = command;
adapter.Fill(ds);
//下面一行代码报错
DataRelation relation = new DataRelation("FK_读者表_借书表", ds.Tables["读者表"].Columns["借书证号"], ds.Tables["借书表"].Columns["借书证号"]);
ds.Relations.Add(relation);
BindingSource bs_读者表= new BindingSource(); // 创建绑定源
BindingSource bs_借书表 = new BindingSource();
bs_读者表.DataSource = ds.Tables["读者表"]; // 绑定到数据源——主表 bs_借书表.DataSource = ds.Relations["FK_读者表_借书表"]; // 绑定到关系——从表,注意:区分大小写 dataGridView2.DataSource = bs_读者表; // DataGridView 显示
dataGridView3.DataSource = bs_借书表;
在运行的时候老是出现“为将对象引用设置为对象实例”,请各位高手帮帮忙,在此感激不尽!!(错误行已用红色字体显示)如果代码中还有其他问题,请帮忙指出来,谢谢!!!!
解决方案 »
- 有人要来面试,没工作经验的,然后我出了几个题,大家看看是否合适:
- dataGridView的清空
- 新手问题,求实现这个需求
- 请求帮助 C#windows form如何想asp.net用表格显示出数据
- js脚本与vs2005写的usercontrol如何交互?急
- Panel Web 服务器控件在 Web 窗体页内提供了一种容器控件?
- datagrid和combo的一个问题!!!!!!救命
- 在一按钮单击中关闭一个线程时很慢,感觉像死机,请教怎么解决?
- .net中一小段VB代码转换成C#代码的问题
- 用户控件怎样添加BackColor属性?
- C#调用别人写的Delphi的EXE文件问题,麻烦高手帮我解答一下
- 如何获取一个GroupBox 里所有的 复选框checkBox?
你这样写:
【
DataRelation relation = new DataRelation("FK_读者表_借书表", ds.Tables["读者表"].Columns["借书证号"], ds.Tables["借书表"].Columns["借书证号"]);
ds.Relations.Add(relation);
】首先,你取出来的【ds.Tables["读者表"].Columns["借书证号"], 】是一个结果集,可能是多条。
同理,令一个也是,而且,两个结果集得条数不一定相等。
其次,你只NEW 了一个对象【relation 】,但是,却可能穿了N个值,一定错误!
还有,【ds.Relations.Add(relation)】中的ADD方法一次只加一个对象,不会加一个集合,所以,要想加集合,需要做循环。
思路:
1 理清主从表的关系,怎样通过主取子(应该通过关系取),不是直接来个全取!!!!!!
2 把NEW 的对象 放到循环中。往下自己想把。