Проблема с назначением свойства dataMember в объектах BindingSource - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть сценарий, в котором у меня есть 3 таблицы, например

, если у меня есть таблица Unit, связанная с двумя другими таблицами (UnitGroup & UnitGroupDetail)

как правильно создать их BindingSources

Я пишу пример того, что я пытаюсь сделать.Я все прояснил внутри

, пожалуйста, помогите мне

Вот код:

private BindingSource _mainBs;
private BindingSource _unitGroupBs;
private BindingSource _unitGroupDetailBs;

private BindingSource _unitUnitGroupBs;
private BindingSource _unitUnitGroupDetail;

private static DataSet GetDataSet()
{
    var dataSet = new DataSet("UnitGroup");

    // Create unit table that contains units informations 
    var unit = new DataTable("Unit");
    unit.Columns.Add(new DataColumn("UnitID", typeof(int)));
    unit.Columns.Add(new DataColumn("UnitName", typeof(string)));
    dataSet.Tables.Add(unit);

    // Create Unit group 
    var unitGroup = new DataTable("UnitGroup");
    unitGroup.Columns.Add(new DataColumn("GroupID", typeof(int)));
    unitGroup.Columns.Add(new DataColumn("GroupName", typeof(string)));
    unitGroup.Columns.Add(new DataColumn("BaseUnitID", typeof(int)));
    dataSet.Tables.Add(unitGroup);
    // Adding the relation between UnitGroup table and Unit table

    var unitGroupDetail = new DataTable("UnitGroupDetail");
    unitGroupDetail.Columns.Add(new DataColumn("UnitGroupDetailID", typeof(int)));
    unitGroupDetail.Columns.Add(new DataColumn("UnitGroupID", typeof(int)));
    unitGroupDetail.Columns.Add(new DataColumn("UnitID", typeof(int)));
    unitGroupDetail.Columns.Add(new DataColumn("ConversionRate", typeof(decimal)));
    dataSet.Tables.Add(unitGroupDetail);

    // Relation Name : Unit:UnitGroup
    dataSet.Relations.Add("Unit:UnitGroup",unit.Columns["UnitID"], unitGroup.Columns["BaseUnitID"]);
    // Relation Name : UnitGroup:UnitGroupDetail
    dataSet.Relations.Add("UnitGroup:UnitGroupDetail",unitGroup.Columns["GroupID"], unitGroupDetail.Columns["UnitGroupID"]);
    // Relation Name : Unit:UnitGroupDetail
    dataSet.Relations.Add("Unit:UnitGroupDetail",unit.Columns["UnitID"], unitGroupDetail.Columns["UnitID"]);

    return dataSet;
}


private void PrepareBindingSources()
{
    _mainBs = new BindingSource(GetDataSet(), string.Empty);

    _unitGroupBs = new BindingSource(_mainBs, "UnitGroup");

    _unitGroupDetailBs = new BindingSource(_unitGroupBs, "UnitGroup:UnitGroupDetail");

    _unitUnitGroupBs = new BindingSource(_unitGroupBs, "Unit:UnitGroup");

    _unitUnitGroupDetail = new BindingSource(_unitGroupDetailBs, "Unit:UnitGroupDetail");

}


private void Form1_Load(object sender, EventArgs e)
{
    PrepareBindingSources();
}

Когда я запускаю код, он говорит System.ArgumentException: 'Свойство DataMember'Unit: UnitGroup 'не найден в источнике данных.'

...