Comment puis-je afficher la somme de dans une colonne datagridview?

j'ai besoin d'afficher la somme de la count colonne de ce datagridview, mais je ne sais pas comment je peux obtenir les données dans le datagridview.

quand je clique sur le bouton, je veux afficher 94label1.

Comment cela peut-il être fait?

alt text

22
demandé sur mahnaz 2010-09-23 19:03:31

8 réponses

int sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count; ++i)
{
    sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value);
}
label1.text = sum.ToString();
30
répondu JamesMLV 2010-09-23 15:07:23

Si votre grille est liée à un DataTable, je crois que vous pouvez simplement faire:

// Should probably add a DBNull check for safety; but you get the idea.
long sum = (long)table.Compute("Sum(count)", "True");

S'il n'est pas lié à une table, vous pouvez facilement faire en sorte:

var table = new DataTable();
table.Columns.Add("type", typeof(string));
table.Columns.Add("count", typeof(int));

// This will automatically create the DataGridView's columns.
dataGridView.DataSource = table;
14
répondu Dan Tao 2010-09-23 15:42:38

Rapide et propre à l'aide de LINQ

int total = dataGridView1.Rows.Cast<DataGridViewRow>()
                .Sum(t => Convert.ToInt32(t.Cells[1].Value));

vérifié sur VS2013

13
répondu Natan Braslavski 2014-08-13 10:36:38

utilisez LINQ si vous le pouvez.

  label1.Text =  dataGridView1.Rows.Cast<DataGridViewRow>()
                                   .AsEnumerable()
                                   .Sum(x => int.Parse(x.Cells[1].Value.ToString()))
                                   .ToString();
6
répondu p.campbell 2010-09-23 16:28:53
 decimal Total = 0;

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    Total+= Convert.ToDecimal(dataGridView1.Rows[i].Cells["ColumnName"].Value);
  }

labelName.Text = Total.ToString();
3
répondu Sherin Reji 2013-05-16 09:39:53

additionnez la ligne totale de votre collecte de données qui sera liée à la grille.

2
répondu dretzlaff17 2010-09-23 17:36:27

Vous pouvez le faire mieux avec deux datagridview, vous ajoutez la même source de données, masquez les en-têtes de la seconde, définissez la hauteur de la seconde = à la hauteur des lignes de la première, désactivez toutes les attributes redimensionnables de la seconde, synchronisez les barres de défilement des deux, seulement horizontale, mettez la seconde sur le botton de la première etc.

regardez:

   dgv3.ColumnHeadersVisible = false;
   dgv3.Height = dgv1.Rows[0].Height;
   dgv3.Location = new Point(Xdgvx, this.dgv1.Height - dgv3.Height - SystemInformation.HorizontalScrollBarHeight);
   dgv3.Width = dgv1.Width;

   private void dgv1_Scroll(object sender, ScrollEventArgs e)
        {
            if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
            {
                dgv3.HorizontalScrollingOffset = e.NewValue;
            }
        }
1
répondu andor 2014-06-14 10:16:38
//declare the total variable
int total = 0;
//loop through the datagrid and sum the column 
for(int i=0;i<datagridview1.Rows.Count;i++)
{
    total +=int.Parse(datagridview1.Rows[i].Cells["CELL NAME OR INDEX"].Value.ToString());

}
string tota
0
répondu FELIXKIPRONO 2017-05-22 14:41:47