2011-06-23 1 views
0

J'essaie de voir si le datagrid.datasource est d'un type particulier, puis prendre une action différente. La première vérification me donne CollectionBase est un type et ne peut pas être utilisé une expression. Qu'est-ce que ça veut dire?dataType question de vérification dans VB.NET

MISE À JOUR 1:

J'ai vérifié et il semble que je vous envoie un tableau d'objets à la grille. Quelque chose comme les clients []. Comment puis-je le rendre générique afin que je puisse obtenir le tableau et aussi en quelque sorte obtenir le compte.

+0

Mes mises à jour devraient répondre à votre question de mise à jour. Bien que si vous utilisez 'TryCast' vous n'avez pas besoin de vérifier le type à l'avance car il retournera null si la distribution échoue. – Jay

Répondre

1

essayer cette

if grid.datasource.GetType() is GetType(CollectionBase) then 
    Dim myCollection as CollectionBase = TryCast(grid.DataSource, CollectionBase) 
    If (myCollection IsNot Nothing) Then 
     myCollection.Count 
    End If 
else if grid.datasource.GetType() is GetType(IEnumerable) then 
    Dim myCollection as IEnumerable= TryCast(grid.DataSource, IEnumerable) 
    If (myCollection IsNot Nothing) Then 
     myCollection.Count() 
    End If 
end if 
1

Vous devez utiliser TypeOf … Is …:

If TypeOf grid.datasource Is CollectionBase Then 
' do sone thing 
Else If TypeOf grid.datasource Is IEnumerable Then 
' do other thing 
End If 

simple fait d'utiliser Is vérifie l'identité de deux objets. Cependant, le deuxième opérande dans votre code n'est pas un objet, c'est un nom de type.

+0

a mis à jour la question avec un plus de détails –