在DATASET中,一旦建立了关系后,系统会自动进行一致性校验的,好象可以通过数据库中设置外键允许为空来实现(听说的,没试过)
DATASET存在着与数据相对应的各个缓冲池,可能数据没被写入主数据缓冲池中吧.
DATASET存在着与数据相对应的各个缓冲池,可能数据没被写入主数据缓冲池中吧.
解决方案 »
- aspx页面加载asp页面中文乱码
- c# 如何调用 LPVOID 参数,LPVOID 是指向的结构体
- c#下实现文件夹,文件的重命名
- 数据库统计显示问题!
- 求一个算法。请高手帮忙解答,比较急,在线等待。
- 如何让同一个事件,在不同时刻执行不同的操作。
- 怎么样实现水晶报表的打印分页?
- SubFabric.SetDataSource(ds2); 未将对象引用设置到对象的实例。
- 哪里可以提供股票的数据接口,
- 请问如何进行进制转换,比如从十进制到二进制等
- 请教一下,C#用的库能不能看到源码?就像VC的MFC和DELPHI的VCL一样?
- 如何用Visual C#编写仿MSN Messager的滚动提示窗口?
ds=new DataSet();
SqlDataAdapter sda=new SqlDataAdapter("select * from orders",sqlConnection1);\\sqlConnection1连接Sql Server数据库NorthWind
sda.Fill(ds,"orders");
ds.Tables["orders"].Columns["CustomerID"].ReadOnly=true;
sda.SelectCommand.CommandText="select * from customers";
sda.Fill(ds,"customers");
ds.Relations.Add(ds.Tables["customers"].Columns["CustomerID"],ds.Tables["orders"].Columns["CustomerID"]);
this.dataGrid1.DataSource=ds;
this.dataGrid1.DataMember="customers";2 这种情况一般使用一个静态的DataSet可以避免很多麻烦。
请注意我所描述的操作细节,主要是细节上的问题。细节:不离开父行直接进入子行中进行操作。
此时可能刚添加的父行没有得到刷新,可能在 Navigate 事件中进行一些特殊处理来解决吧。我要防止这种操作上的不便性,我总不能提醒用户要先离开一下该父行后再进行子行的添加吧。
private void dataGrid1_Navigate(object sender, System.Windows.Forms.NavigateEventArgs ne)
{
textBox1.Text=ds.Tables["customers"].Rows[ds.Tables["customers"].Rows.Count-1]["CustomerID"].ToString();this.BindingContext[this.dataGrid1.DataSource,"customers"].Position=this.BindingContext[this.dataGrid1.DataSource,"customers"].Count-1;
}
运行结果说明,如果以“正常”的步骤进入子表,那么DataGrid的内部代码会执行一个方法,设置子表的显示项。从上面代码的运行结果可以知道,这个内部方法的执行相当于在子表应用过滤条件“子表外键='主表绑定源当前项的主键值'”。
奇怪的是,按照你所述的步骤进行,运行结果清楚地说明了:好像这个方法没有被调用。