2009-11-10 2 views
2

지도 책에서 페이지를 나타 내기 위해 DataGridView를 설정하려고합니다. 표의 각 셀은 MapGrid 객체를 나타냅니다. 사용자는 이것을 사용하여 MapGrid의 경로를 설정합니다.각 셀이 각 행보다는 바인딩 된 개체가되도록 DataGridView에 바인딩

public class MapGrid 
{ 
    public int ID { get; set; } 
    public short PageNumber { get; set; } 
    public char ColumnNumber { get; set; } 
    public byte RowNumber { get; set; } 
    public RouteSummary Route { get; set; } 
} 

public class RouteSummary 
{ 
    public int ID { get; set; } 
    public byte RouteNumber { get; set; } 
} 

데이터 바인딩을 사용하여 내 MapGrid 개체 목록을 표에 바인딩 할 수 있는지 궁금합니다. 나는 같은 것을 할 싶습니다 :

List<MapGrid> mapGrids = GetMapGrids(); 
dataGridView.DataSource = mapGrids; 

그리고 나는 MapGrid.RouteSummary.RouteNumber 속성을 표시하는 DataGridView를하고 싶습니다.

아마도 ILookup<byte, MapGrid>을 만들어 행별로 MapGrid를 그룹화 할 수 있다고 생각했습니다. 그런 다음 DataGridView에 바인딩 할 수 있습니다. 그래도 RouteNumber를 표시하는 방법을 알 수는 없습니다.

열 수가 일정하면 각 열의 속성으로 개체를 만들고 DataGridView에 해당 개체의 목록을 바인딩 할 수 있습니다. 물론 사물은 그렇게 간단하지 않습니다. 열의 수가 일정하지 않습니다. 그래서 나는 그것이 어떻게 작동 하는지를 보지 못합니다.

아이디어가 있으십니까? 데이터 바인딩 범위를 넘어서 뭔가를하려고합니까? 지금 당장 MapGrid 객체로 DataGridView를 수동으로 채우고 CellValueChanged 이벤트를 사용하여 업데이트해야한다고 생각합니다.

+0

데이터 바인딩이 내가 원하는 것처럼 작동하지 않는다고 가정합니다. 나는 아이디어를 포기하고 DataGridView 대신 TreeView를 사용하기로 결정했습니다. – Ecyrb

답변

2

내가 원하는 것은 DataGridView.DataSource 속성을 사용하여 수행 할 수 없다는 결론에 도달했습니다. 마지막으로 for 루프를 사용하여 DataGridView에 열과 행을 수동으로 추가했습니다.

0

왜 여분의 수업이 필요합니까? MapGrid를

public class MapGrid 
{ 
    public int ID { get; set; } 
    public short PageNumber { get; set; } 
    public char ColumnNumber { get; set; } 
    public byte RowNumber { get; set; } 
    public int RouteID { get; set; } 
    public byte RouteNumber { get; set; } 
} 

으로 정의 할 수도 있습니다. 그런 다음 간단한 바인딩을 원하는대로 사용할 수 있습니다.

+0

RouteSummary 클래스는 실제로 코드의 다른 위치에서 사용됩니다. 따라서 그것을 어기면 좋은 OO 디자인입니다. 하지만 당신이 제안한 것과 같은 단 하나의 수업을 듣고 싶다고합시다. 내가 설명하는 것처럼 그게 내가 묶는 것을 어떻게 도울까요? 나는 따라하지 않는다. – Ecyrb

+0

개체 간의 관계는 무엇입니까? RouteNumber와 MapGrid 사이에 1 대 1입니까? 출력물을 어떻게 보이게 할 것인지 명확하지 않습니다. MapGrid 객체의 속성이 아닌 RouteSummary 객체 필드의 속성 이었기 때문에 각지도 격자 행에 경로 번호를 표시하는 데 문제가 있다고 생각했습니다. –

+0

예, 하나의'Route'는 많은'MapGrids '를 가질 수 있습니다. 내가 쏘고있는 출력물은 예를 들어, A-F 열과 1-6 행 (6x6 그리드)이있는'DataGridView '입니다. 그러나이 숫자는 가변적이어서 어렵게 만듭니다. 'MapGrid'가'ColumnNumber' = 'A'와'RowNumber' = 1을 가지면'DataGridView'의 해당 셀은'MapGrid.Route.RouteNumber'를 표시하도록'DataGridView.DataSource'를 설정하려고합니다. . 지연된 응답에 대해 유감스럽게도, 나는 지금까지 답변하지 않았다는 것을 알지 못했습니다. – Ecyrb

관련 문제