1

次のような LINQ クエリがあります。

    allRecords = (From metaset In section.sets
                  From metacell In metaset.cells
                  Let attrib = metacell.attrib
                  Order By attrib.attrib_name
                  Select Attribute = attrib.attrib_name,
                         Type = attrib.attrib_name,
                         Col = metacell.column,
                         Row = metacell.row
                     ).ToArray()

<anonymous type>配列を返します。
と書くmyDataGridView.DataSource = allRecordsと、グリッドが正しく塗りつぶされます。

CellDetailしかし、代わりにオブジェクトの配列を返すようにクエリを変更すると、次のようになります<anonymous type>

    allRecords = (From metaset In section.sets
                  From metacell In metaset.cells
                  Let attrib = metacell.attrib
                  Order By attrib.attrib_name
                  Select New CellDetail With {
                         .Attribute = attrib.attrib_name,
                         .Type = attrib.attrib_name,
                         .Col = metacell.column,
                         .Row = metacell.row
                     ).ToArray()

どこCellDetailでそのように定義されています:

Public Class CellDetail

    Public Attribute As String
    Public Type As String
    Public Col As Int32
    Public Row As Int32

End Class

DataGridView は互換性のあるデータを見つけられず、何も表示されません!

CellDetailクラスを DataGridView の DataSource と互換性を持たせるために実装する必要がある .Net インターフェイスはありますか?

4

1 に答える 1

3

DataGridViewフィールドではなくプロパティにバインドします。それらをプロパティにします。

Public Class CellDetail    
    Public Property Attribute As String
    Public Property Type As String
    Public Property Col As Int32
    Public Property Row As Int32    
End Class

または C# では、次のようになります。

public class CellDetail {    
    public string Attribute {get;set;}
    public string Type {get;set;}
    public int Col {get;set;}
    public int Row {get;set;}
}
于 2012-10-24T10:04:11.863 に答える