Подтвердить что ты не робот

Как я могу показать сумму в столбце datagridview?

Мне нужно показать сумму столбца count из этого datagridview, но я не знаю, как я могу получить данные в datagridview.

Когда я нажимаю на кнопку, я хочу показать 94 в label1.

Как это можно сделать?

alt text

4b9b3361

Ответ 1

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();

Ответ 2

Быстрый и чистый способ с помощью LINQ

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

проверено на VS2013

Ответ 3

Если ваша сетка привязана к DataTable, я считаю, что вы можете просто сделать:

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

Если он не привязан к таблице, вы можете легко сделать это:

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

// This will automatically create the DataGridView columns.
dataGridView.DataSource = table;

Ответ 4

Используйте LINQ, если можете.

  label1.Text =  dataGridView1.Rows.Cast<DataGridViewRow>()
                                   .AsEnumerable()
                                   .Sum(x => int.Parse(x.Cells[1].Value.ToString()))
                                   .ToString();

Ответ 5

 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();

Ответ 6

Добавьте общую строку в ваш сбор данных, который будет привязан к сетке.

Ответ 7

вы можете сделать это лучше с помощью двух datagridview, вы добавите один и тот же источник данных, спрячьте заголовки второго, установите высоту второго = в высоту строк первого, отключите все изменчивые атрибуты второго, синхронизировать полосы прокрутки обоих, только горизонтальные, поставить вторую на botton первого и т.д.

взгляните:

   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;
            }
        }

Ответ 8

//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