2015-07-15 1 views
0

J'affiche dynamiquement mes colonnes pour mon GridView et je souhaite ajouter une autre colonne basée sur les valeurs de deux autres colonnes. Donc, la nouvelle colonne est le nombre d'emplois moins le nombre de POD. J'ai été en mesure de créer la nouvelle colonne mais elle affiche uniquement les résultats de la première ligne dans GridView et toutes les autres lignes sont vides. Aussi est-il possible de changer la position de cette colonne? Il est par défaut à la dernière colonne mais j'aimerais que ce soit la 4ème colonne dans le GridView.La colonne ajoutée ne fonctionne que pour la première ligne de GridView

main.Columns.Add("NotPOD", typeof(int)); 
       int index = 0; 
       foreach (DataRow row in main.Rows) 
       { 
        main.Rows[index]["NotPOD"] = Convert.ToInt32(main.Rows[index]["Jobs"]) - Convert.ToInt32(main.Rows[index]["POD"]); 
       } 

      gvResults.DataSource = main; 
      gvResults.DataBind(); 
+1

Votre index ne se met pas à jour –

+0

@ M.NasserJavaid Comment modifier la position de la colonne? – user123456789

+0

utiliser la propriété 'DisplayIndex' –

Répondre

1

Votre code a un bug. Lorsque vous utilisez foreach, vous n'avez pas besoin d'utiliser index. Vous aussi ne pas incrémenter l'indice

 foreach (DataRow row in main.Rows) 
     { 
      row["NotPOD"] = Convert.ToInt32(row["Jobs"]) - Convert.ToInt32(row["POD"]); 
     } 
+0

merci cela a fonctionné. Savez-vous comment changer la position de la colonne? – user123456789

+0

Vous voulez dire en main? ou gridview? – HarryQuake

+0

dans le gridview. Main est le nom de DataTable et gvResults est le nom de la grille – user123456789

0

Je suppose un problème pour le résoudre mettre à jour votre index comme

main.Columns.Add("NotPOD", typeof(int)); 
      int index = 0; 
      foreach (DataRow row in main.Rows) 
      { 
       main.Rows[index]["NotPOD"] = Convert.ToInt32(main.Rows[index]["Jobs"]) - Convert.ToInt32(main.Rows[index]["POD"]); 
       index++; 
      } 

     gvResults.DataSource = main; 
     gvResults.DataBind(); 

J'espère que cela vous aidera

2

En utilisant foreach

main.Columns.Add("NotPOD", typeof(int));  
foreach (DataRow row in main.Rows) 
{ 
    row["NotPOD"] = Convert.ToInt32(row["Jobs"]) - Convert.ToInt32(row["POD"]); 
} 
gvResults.DataSource = main; 
gvResults.DataBind(); 

En utilisant for

main.Columns.Add("NotPOD", typeof(int));  
for(int index = 0;index < main.Rows.Count; index++) 
{ 
    main.Rows[index]["NotPOD"] = Convert.ToInt32(main.Rows[index]["Jobs"]) - Convert.ToInt32(main.Rows[index]["POD"]); 
} 
gvResults.DataSource = main; 
gvResults.DataBind();