2012-10-24 2 views
1

J'ai une requête LINQ comme ce qui suit:Quelle interface implémentation pour utiliser un tableau de (MyType) en tant que DataSource?

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() 

Il retourne un tableau <anonymous type>.
Et quand j'écris myDataGridView.DataSource = allRecords, la grille se remplit correctement.

Mais, si je modifie la requête pour retourner un tableau de CellDetail objets, au lieu de <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 est défini ainsi:

Public Class CellDetail 

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

End Class 

DataGridView n » t trouver des données compatibles et ne montre rien!

Y at-il une interface .Net je mettre en œuvre pour rendre CellDetail classe compatible avec le DataSource d'un DataGridView?

+0

Lire les commentaires pour la propriété DataSource http://msdn.microsoft.com/en-us/library/system.windows.forms. datagridview.datasource.aspx – RobH

+0

@Munchies qui ne s'appliquent pas réellement à cette question; les deux sources sont des tableaux et les tableaux implémentent 'IList'. Ce n'est pas la raison pour laquelle cela fonctionne pour l'un et pas pour l'autre. –

+0

@MarcGravell Yup, je n'ai pas lu la question correctement. – RobH

Répondre

3

DataGridView se lie à propriétés, non champs. Faites-leur des propriétés.

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 

ou en C#, ce serait:

public class CellDetail {  
    public string Attribute {get;set;} 
    public string Type {get;set;} 
    public int Col {get;set;} 
    public int Row {get;set;} 
} 
+0

Merci @ Marc Gravell ... Accepter votre réponse! – Teejay

Questions connexes