Mahmoud Magdy Mousaa Ответов: 1

Суммируйте несколько столбцов в datagrideview и добавьте в нижний колонтитул


этот код работает со мной, чтобы суммировать один столбец в datagrideview, но я хочу суммировать несколько столбцов в datagrideview

decimal sum1 = 0, sum2 = 0;
            for (int i = 0; i < dgw.RowCount; i++)
            {
                // we only sum the first and third column as an example
                sum1 += Convert.ToDecimal(dgw.Rows[i].Cells[4].Value);
                sum2 += Convert.ToDecimal(dgw.Rows[i].Cells[5].Value);
            }
            // add the total row
            string[] totalrow = new string[] { sum1.ToString(), "", sum2.ToString() };
            dgw.Rows.Add(totalrow);
            // add a rowheadertitle
            dgw.RowHeadersWidth = 60;
            dgw.Rows[dgw.RowCount - 1].HeaderCell.Value = "Total"; 


Что я уже пробовал:

этот код работает со мной, чтобы суммировать один столбец в datagrideview, но я хочу суммировать несколько столбцов в datagrideview

Karthik_Mahalingam

так в чем же проблема ?

Dotnet_Dotnet

десятичные sum1 = 0, sum2 = 0,sum3 =0;
for (int i = 0; i < dgw.Количество строк; я++)
{
// мы суммируем только первый и третий столбцы в качестве примера
сумма 1 += конвертация.ToDecimal(dgw.Rows[i].Ячейки[4].Значение);
сум2 += конвертировать.ToDecimal(dgw.Rows[i].Ячейки[5].Значение);
sum3 = sum3 + (sum1+ sum2);
}
// добавить общую строку
string[] totalrow = новая строка[] { sum1.ToString(), "", sum 2.Метод toString() };
dgw.Rows.Add(totalrow);
// добавить rowheadertitle
ДГВ.RowHeadersWidth = 60;
dgw.Rows[dgw.RowCount - 1].HeaderCell.Value = "всего";

1 Ответов

Рейтинг:
1

Maciej Los

этот код работает со мной, чтобы суммировать один столбец в datagrideview, но я хочу суммировать несколько столбцов в datagrideview

- Вы уверены?
Вы хотите суммировать первый и третий столбцы , но ссылаетесь на Cells[4] и Cells[5]
sum1 += Convert.ToDecimal(dgw.Rows[i].Cells[4].Value);
sum2 += Convert.ToDecimal(dgw.Rows[i].Cells[5].Value);


Кроме того, способ добавления новой строки неверен:
string[] totalrow = new string[] { sum1.ToString(), "", sum2.ToString() };

Размер массива должен быть равен количеству ячеек!

Например:
// Set the column header names.
dataGridView1.Columns[0].Name = "Recipe";
dataGridView1.Columns[1].Name = "Category";
dataGridView1.Columns[2].Name = "Main Ingredients";
dataGridView1.Columns[3].Name = "Rating";

// Populate the rows.
//ColNo                              0          1           2           3
string[] row1 = new string[] { "Meatloaf", "Main Dish", "ground beef", "**" };
dataGridView1.Rows.Add(row1);


Для получения более подробной информации, пожалуйста, смотрите: Практическое руководство.Свойства Строки (Системы.Окна.Формы)[^]