назначение BindingSources с DataMembers показывает, что «свойство DataMember« Unit: UnitGroup »не может быть найдено в DataSource». - PullRequest
0 голосов
/ 10 сентября 2018

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

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

как правильно создать свои источники привязки

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

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

Вот код:

    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 'не может быть найдено в источнике данных.'

...