SetBinding和关系

时间:2014-03-04 18:10:36

标签: c# wpf relationship

我目前有一个由三个表组成的数据集。然后通过数据关系链接这三个表。

我希望能够设置绑定到文本框控件和其他控件,提供来自所有三个表的信息,同时能够使用CollectionViewSource进行导航。

我目前有以下内容:

var con = Database.GetConnection();
RefundsDS = new DataSet();
RefundAdapter = new SqlDataAdapter("SELECT * FROM MemberMoment WHERE RefundRequestedOn IS NOT NULL", con);
RefundAdapter.Fill(RefundsDS, "MemberMoment");

RefundAdapter = new SqlDataAdapter("SELECT SpecialMomentID, MomentName, MomentDateTime FROM SpecialMoment", con);
RefundAdapter.Fill(RefundsDS, "SpecialMoment");

RefundAdapter = new SqlDataAdapter("SELECT MemberNo, FirstName, Surname FROM Member", con);
RefundAdapter.Fill(RefundsDS, "Member");

Relation = new DataRelation ("MemberToMM", RefundsDS.Tables["Member"].Columns["MemberNo"], RefundsDS.Tables["MemberMoment"].Columns["MemberNo"]);
RefundsDS.Relations.Add(Relation);

Relation = new DataRelation("SpecialMomentToMM", RefundsDS.Tables["SpecialMoment"].Columns["SpecialMomentID"], RefundsDS.Tables["MemberMoment"].Columns["SpecialMomentID"]);
RefundsDS.Relations.Add(Relation);

RefundViewSource.Source = RefundsDS;
this.DataContext = RefundViewSource; 

OrderIDTxt.SetBinding(TextBox.TextProperty, "MemberMoment/MemberMomentNo");
MomentNameTxt.SetBinding(TextBox.TextProperty, "SpecialMoment/MomentName");

通常要浏览DataRows,我使用:CollectionViewSoureObject.MoveCurrentToPrevious()

等但是这不起作用,可能是因为它是一个DataSet。

我该如何修改?

更新:没关系问题已解决,使用JOIN select语句代替使用单个DataTable,更容易。

1 个答案:

答案 0 :(得分:0)

在单个数据表上使用多个连接解决了问题。