2009-11-10 20 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; 

而且我想在DataGridView顯示MapGrid.RouteSummary.RouteNumber財產。

我在想也許我可以創建一個ILookup<byte, MapGrid>按行分組MapGrid。那麼也許我可以將它綁定到DataGridView。但我不確定我會如何告訴它顯示RouteNumber。

如果列數是恆定的,我可以簡單地爲每列創建一個包含屬性的對象,並將這些列表綁定到DataGridView。但當然事情並不那麼簡單。列數不是恆定的。所以我不明白這是如何工作的。

任何想法?我是否試圖做超出數據綁定範圍的事情?現在我想我必須用我的MapGrid對象手動填充DataGridView,並使用CellValueChanged事件來更新內容。

+0

我打算假設數據綁定就像我希望的那樣工作。我決定放棄這個想法並使用TreeView而不是DataGridView。 – Ecyrb 2009-11-17 18:57:25

回答

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 2009-11-30 15:34:02

+0

你的物體之間有什麼關係? RouteNumber和MapGrid之間是多對多的嗎?目前還不清楚你希望你的輸出看起來如何。我認爲問題在於你難以在每個地圖網格行上顯示路線編號,因爲它是RouteSummary對象字段的屬性,而不是MapGrid對象的屬性。 – 2009-11-30 18:14:37

+0

是的,一個'Route'可以有很多'MapGrids'。例如,我要拍攝的輸出是一個帶有A-F列和1-6行(一個6x6網格,但這些數字是可變的,這使得它很困難)的DataGridView。我希望設置'DataGridView.DataSource',這樣如果'MapGrid'具有'ColumnNumber' ='A'和'RowNumber' = 1,那麼'DataGridView'中的相應單元格將顯示'MapGrid.Route.RouteNumber' 。對於遲到的回覆抱歉,我沒有注意到你直到現在纔回復。 – Ecyrb 2009-12-18 16:21:46

相關問題