2017-09-21 4 views
-1

Je construis table de données comme ceci ci-dessous et quand j'essaie d'attribuer une valeur à la base de données sur la ligne par base de la ligne je reçois erreur comme ceincapable de comprendre l'indice hors de portée exception

il n'y a pas de ligne à la position 0

et voici mon code:

public DataTable BuildCertInfo() 
    { 
     DataTable dtCertInfo = new DataTable(TABLE); 
     DataColumnCollection columns; 
     columns = dtCertInfo.Columns; 

     AddColumn(dtCertInfo, ROW_NO, "System.Int32", false, 0); 
     AddColumn(dtCertInfo, LIC_ID, "System.Int32", false, 0); 
     AddColumn(dtCertInfo, SYS_ID, "System.Int32", false, 0); 

     AddColumnString(dtCertInfo, SYS_PART_ID); 
     ............... 
     ............... 
      return dtCertInfo; 
    } 

et je fais appel au-dessus de méthode comme celle

DataTable dt = objCertificate.BuildCertInfo(); 

puis je suis Boucler dans le gridview et l'attribution de valeurs à la table de données comme ci-dessous ..

for (int i = 0; i < gvPRCertInfo.Rows.Count; i++) 
{ 

    dt.Rows[i][Certificate.SYS_PART_ID] = systemPartID; // here I am getting error 
    ................ 
    ................ 
    } 

Je ne sais pas où je fais mal pourrait tout s'il vous plaît me diriger dans la bonne direction qui serait très reconnaissant me

un grand merci à l'avance ...

+0

Etes-vous sûr que 'dt.Rows' a suffisamment de lignes pour couvrir la plage de' i'? – dasblinkenlight

+1

Il semble que vous essayez de remplir 'dt' avec des lignes avec la boucle' for'. Si c'est le cas, vous devez créer une nouvelle ligne et l'ajouter à 'dt' en premier. – VDWWD

+0

Copie possible de [Insérer une nouvelle ligne dans DataTable] (https://stackoverflow.com/questions/4731622/insert-a-new-row-into-datatable) – mjwills

Répondre

1

vous ne créez pas de ligne, c'est la raison pour laquelle vous obtenez l'erreur. Essayez quelque chose comme ceci:

for (int i = 0; i < gvPRCertInfo.Rows.Count; i++) 
{ 
    dt.Rows.Add(dt.NewRow()); 
    dt.Rows[i][Certificate.SYS_PART_ID] = systemPartID; 
    .... 
}