1

私の両方のDataGridViewは、親レコードと子レコードを正しく表示します。また、子レコードを正常に追加して、データソース(XMLファイル)に保存することもできます。ただし、新しい親と子を追加しようとすると、詳細DataGridViewに存在していても、追加する子レコードがないという例外がプログラムによってスローされます。

したがって、問題は、子レコードが新しいときにクラスにバインドされていないことです。私は何が欠けていますか?

私のクラスは次のように構成されています。

public class Roads
{
   public string RoadName { get; set; }
   public List<CrossStreet> CrossStreets { get; set; }        
}

public class CrossStreet
{
   public string CrossStreetName { get; set;}
}

2つのDataGridViewがあり、次のようにクラスをそれらにバインドしています。

BindingSource roadBindingSource = new BindingSource();
BindingSource crossStreetBindingSource = new BindingSource();

// _roads contains both the road and cross street data.
roadBindingSource.DataSource = _roads;

crossStreetBindingSource.DataSource = roadBindingSource;
crossStreetBindingSource.DataMember = "CrossStreets";

dataGridViewRoads.DataSource = roadsBindingSource;
dataGridViewCrossStreets.DataSource = crossStreetBindingSource;
4

1 に答える 1

0

問題は私のクラスの実装でした。それ以外の:

public class Roads
{
   public string RoadName { get; set; }
   public List<CrossStreet> CrossStreets { get; set; }        
}

public class CrossStreet
{
   public string CrossStreetName { get; set;}
}

私が使用した:

public class Roads
{
   private List<CrossStreets> _crossStreets = new List<CrossStreets>();
   public string RoadName { get; set; }
   public List<CrossStreet> CrossStreets { get { return _crossStreets;} }        
}

public class CrossStreet
{
   public string CrossStreetName { get; set;}
}
于 2013-01-24T20:59:16.650 に答える