2010-04-26 4 views
0

J'essaye de construire une DataTable une rangée à la fois en utilisant le code suivant.DataTable C# Type de colonne vide

foreach (var e in Project.ProjectElements[hi.FakeName].Root.Elements()) { 
     index = 0; 
      object[] obj=new object[count]; 
      foreach (var holdingColumn in names) { 
       string d = e.Attribute(holdingColumn.Key).Value; 
       obj[index++] = d; 
      } 
      dt.Rows.Add(obj); 
     } 

Le problème est que DataTable a des types liés aux colonnes. Parfois im passer null (ou une chaîne vide) dans cet index d'objet et il me dit qu'il ne peut pas être converti correctement en un DateTime (dans ce cas). Ma question est à quoi devrais-je par défaut cette valeur, ou est-il possible de faire en sorte que le DataTable ignore les valeurs vides.

Répondre

3

Définissez la propriété AllowDBNull de la DataColumn true, puis écrire

if (String.IsNullOrEmpty(d)) 
    obj[index++] = DBNull.Value; 
else 
    obj[index++] = d; 
+0

Je savais que ça allait être aussi facile, je ne pouvais pas trouver à l'aide de Google. – Dested

+0

Vous devrez peut-être également appeler 'Convert.ChangeType'. – SLaks

Questions connexes