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 94
label1
.
Comment cela peut-il être fait?
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();
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;
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
utilisez LINQ si vous le pouvez.
label1.Text = dataGridView1.Rows.Cast<DataGridViewRow>()
.AsEnumerable()
.Sum(x => int.Parse(x.Cells[1].Value.ToString()))
.ToString();
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();
additionnez la ligne totale de votre collecte de données qui sera liée à la grille.
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;
}
}
//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