Вот кусок кода, выдранный из юнит-тестов, который делает то что тебе надо Фишка в синтаксисе имени детальной таблицы: ... detailGrid.DataMember = "MasterTable.Relation"; ...
| Код | using System; using System.Data; using System.Windows.Forms;
namespace MasterDetail.Test { public partial class FormWithMasterDetailGrids : Form { public FormWithMasterDetailGrids() { InitializeComponent(); BindGridsToData(masterGrid, detailGrid, CreateData(5, 5)); } void BindGridsToData(DataGridView masterGrid, DataGridView detailGrid, DataSet dataSet) { masterGrid.DataSource = dataSet; masterGrid.DataMember = "MasterTable"; detailGrid.DataSource = dataSet; detailGrid.DataMember = "MasterTable.Relation"; } DataSet CreateData(int numMaster, int numDetail) { DataSet dataSet = new DataSet("TestData"); DataTable masterTable = dataSet.Tables.Add("MasterTable"); DataTable detailTable = dataSet.Tables.Add("DetailTable"); // DataColumn colID = masterTable.Columns.Add("ID", typeof(int)); DataColumn colName = masterTable.Columns.Add("Name", typeof(string)); // DataColumn colID1 = detailTable.Columns.Add("ID", typeof(int)); DataColumn colMasterID = detailTable.Columns.Add("MasterID", typeof(int)); DataColumn colName1 = detailTable.Columns.Add("Name", typeof(string)); // dataSet.Relations.Add("Relation", colID, colMasterID, true); // GenerateData(numMaster, numDetail, masterTable, detailTable); return dataSet; } void GenerateData(int numMaster, int numDetail, DataTable masterTable, DataTable detailTable) { for(int masterId = 0; masterId < numMaster; masterId++) { masterTable.Rows.Add(masterId, "MasterRecord" + masterId.ToString()); for(int i = 0; i < numDetail; i++) { int detailId = masterId * 100 + i; detailTable.Rows.Add(detailId, masterId, "DetailRecord" + detailId.ToString()); } } } } } |
|