String qtext = "select * from product_sort";
SqlConnection sconn = new SqlConnection(Global.ConnectString);
SqlDataAdapter sda = new SqlDataAdapter(qtext,sconn);
DataSet ds = new DataSet();
sda.Fill(ds,"product_sort");
qtext = "select * from product"; 
sda = new SqlDataAdapter(qtext,sconn);
sda.Fill(ds,"product");
ds.Relations.Add("明细",ds.Tables["product_sort"].Columns["prdt_sort_name"], ds.Tables["product"].Columns["prdt_sort_name"]);
dataGrid1.SetDataBinding(ds,"product_sort");
dataGrid2.SetDataBinding(ds,"product");按照上面的写法,子表的dataGrid2中会显示全部记录,而不是根据主表的行进行过滤,为什么??
但是在我已经在主表dataGrid1中看到有加号了,点进去连接也是正确的.
我想将主从表分开在两个DataGrid显示,并且主表中不要显示那个加号,要怎么做?

解决方案 »

  1.   

    dataGrid1.SetDataBinding(ds,"product_sort");
    dataGrid2.SetDataBinding(ds,"product");这个错了。
    主表datagrid应该绑定到主表上,
    从表datagrid应绑定到关系上,而不是从表上
      

  2.   

    关系就是你这里取的名字
    ds.Relations.Add("明细",ds.Tables["product_sort"].Columns["prdt_sort_name"], ds.Tables我觉得还是用英文名字好点
      

  3.   

    go here,
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
      

  4.   

    感谢deyangwangyu(wangyu)
    让我知道从表DataGrid应该是绑定到关系上
    感谢zhzuo(秋枫)
    让我知道怎样将关系绑定到DataGrid上再次感谢