2017-05-08 14 views
0

我有一個屏幕,可以顯示來自三個不同類的三組數據。但是,它應該每次只顯示一個,具體取決於初始化時設置的模式。當然,這三個類(我迄今爲止只寫了一個類)實現了一個定義它們的共享屬性的接口(IExportSelectionStructure):Selected。這些類沒有其他屬性可以放入界面。使用列表(的接口),而不是一個集合沒有正確填充DataGridView

enter image description here

屏幕具有下面的代碼:

Private _BaseStructure As IExportStructure 
Private _DataSet As List(Of IExportSelectionStructure) 

Public Sub New(exportMode As ExportRunMode) 
    'BaseStructure setup goes here 
    _DataSet = _BaseStructure.GetDataSet(_Session, _Settings) 
    With ExportDataGridView  
     .AutoGenerateColumns = False 
     .Columns.AddRange(_BaseStructure.GenerateExporterColumns.ToArray) 
     .Datasource = _DataSet 
    End With 
End Sub 

我在客戶的出口模式下運行。 此時,_DataSet裏面有三個ExportCustomerSelectionStructure類,以及每個類中的預期數據。

然而,當它被設置爲數據源爲GridView,GridView控件顯示三個記錄,但列是空,除「選擇」列 - 這是一個CheckBoxCell

Data is empty

在調試這方面,我嘗試切換_DataSetCollection,並且也得到了IExportStructure.GetDataSet返回一個Collection - 你瞧,在屏幕上精美絕倫的數據出現,但我不希望要使用Collection,我想使用List(Of IExportSelectionStructure)。我不能再比界面更具體,我也不想再去比那更通用。

我在做什麼錯,我錯過了什麼明顯?

回答

0

好的,所以這是一個奇怪的。

經過兩天的努力,我意識到我必須將泛型列表轉換回依賴於屏幕模式的特定類,否則DataGridView不知道您的數據類是什麼'正在與!因此,圍繞此的代碼是:

_DataSet = _BaseStructure.GetDataSet(_Session, _Settings) 

Select Case _ExportRunMode 
    Case ExportRunMode.Customers 
     ExportDataGridView.Datasource = _DataSet.Cast(Of ExportCustomerSelectionStructure).ToList 
    'Etc... 
End Case 
相關問題