如何汇总datagridView行中的2列

时间:2018-09-21 17:00:45

标签: c# winforms datagridview

大家好?我正在使用Windows应用程序窗体c#,并且在datagridView中有4列,可以说我有3行,就像这样

-------------------------------
|Grade1|Grade2|Average|Remarks|
|------|------|-------|-------|
|    85|    80|   82.5|PASSED |
|    76|    86|     81|PASSED |
|    75|    72|   73.5|FAILED |
-------------------------------

现在我的问题是,如果我单击一个计算按钮,它将计算列“ Grade1”和列“ Grade2”的每一行是有可能的

Grade1 + Grade2 = Average and Average = Average/2

如果低于74,则备注栏会自动显示“ FAILED” 如果高于75,则备注栏会自动显示“通过”

有人有示例代码或链接可以帮助我做到这一点吗?非常感谢!

3 个答案:

答案 0 :(得分:2)

您可以通过操作枚举所有行

foreach(DataGridViewRow row in dataGridView.Rows)

您可以通过执行操作获取或设置该特定行中单元格的值

row["column name"].Value

您可以将click事件附加到Button.Click(通过使用.Click += handler在代码中进行,也可以在设计器中进行)

组装所有这些零件并提出可行的解决方案将是您的工作。祝你好运:)

答案 1 :(得分:0)

private void CalculateButton_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dgvGrades.Rows)
    {
        if (decimal.TryParse(row.Cells["Grade1"]?.Value?.ToString(), out decimal Grade1)
            && decimal.TryParse(row.Cells["Grade2"]?.Value?.ToString(), out decimal Grade2))
        {
            var avg = (Grade1 + Grade2) / 2;
            row.Cells["Average"].Value = avg;

            if (avg < 74)
            {
                row.Cells["Remarks"].Value = "FAILED";
            }
            else
            {
                row.Cells["Remarks"].Value = "PASSED";
            }
        }
    }
}

enter image description here

答案 2 :(得分:0)

我只是将成员添加到正在填充数组或用于填充网格的列表的类中。平均值和通过/失败字段的获取器可以处理逻辑。