【问题标题】:How to sum 2 columns within a row of datagridView如何对一行datagridView中的2列求和
【发布时间】:2018-09-21 17:00:45
【问题描述】:

大家好?我正在处理 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 则备注栏自动有一个“PASSED”

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

【问题讨论】:

  • 有可能吗?明确地。请发布您的代码块,以便我们提供进一步的帮助。
  • 您的标题与您提出的问题不符。该问题表明您想将两列值相加,并计算两列的平均值,然后有条件地添加备注 - 都在同一行内。

标签: c# winforms datagridview


【解决方案1】:

您可以通过以下方式枚举所有行

foreach(DataGridViewRow row in dataGridView.Rows)

您可以通过以下方式获取或设置该特定行中单元格的值

row["column name"].Value

您可以将点击事件附加到 Button.Click(在代码中使用 .Click += handler 或在设计器中执行)

组装所有这些部分并提出可行的解决方案将是您的练习。祝你好运:)

【讨论】:

    【解决方案2】:
    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";
                }
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        • 2022-10-05
        • 1970-01-01
        • 2014-09-20
        • 1970-01-01
        相关资源
        最近更新 更多