1

在这里,在这里datagridview,我想计算类似部门的总和。

也就是说,如果部门是第一行的建筑,其TMH下方datagridview值的单元格是 36。

然后在第二行,我的部门是设计,其 TMH 单元格值为 45。

然后我再次选择了第三行的建筑部门,它的 TMH 值现在是 45。

这是我的代码

           private void ProjectActivitiesGrid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        Decimal sum = 0;

        #region THM CALCULATION.

        int column = ProjectActivitiesGrid.CurrentCell.ColumnIndex;
        string headerText = ProjectActivitiesGrid.Columns[column].HeaderText;

        DataGridViewRow d = this.ProjectActivitiesGrid.Rows[e.RowIndex];

        String department = d.Cells[0].Value.ToString();

            String chk = m_Project.projdepthrs.Where(c => c.DEPARTMENT == department).Select(c => c.DEPARTMENT).FirstOrDefault();

            if (chk == null)
            {
                MessageBox.Show("Please fill up department alloted hrs first");
                d.Cells[1].ReadOnly = true;
                d.Cells[2].ReadOnly = true;
                d.Cells[3].ReadOnly = true;
                d.Cells[4].ReadOnly = true;
                d.Cells[5].ReadOnly = true;
                d.Cells[6].ReadOnly = true;
                d.Cells[7].ReadOnly = true;

            }
            else
            {
                d.Cells[1].ReadOnly = false;
                d.Cells[2].ReadOnly = false;
                d.Cells[3].ReadOnly = false;
                d.Cells[4].ReadOnly = false;
                d.Cells[5].ReadOnly = false;
                d.Cells[6].ReadOnly = false;
                d.Cells[7].ReadOnly = false;

                String tmh = m_Project.projdepthrs.Where(c => c.DEPARTMENT == department).Select(c => c.TMH).First();
                LBLAllotedhrs.Text = tmh;
                LBLLefthrs.Text = tmh;
            }


               foreach (DataGridViewRow rw in ProjectActivitiesGrid.Rows)
               {
                       if (department == d.Cells[0].Value.ToString())
                           sum = sum + Convert.ToInt32(d.Cells[5].Value);
                       else
                           sum = 0;

               }
                LBLLefthrs.Text = (Convert.ToInt32(LBLLefthrs.Text) - Convert.ToInt32(sum)).ToString(); 

        #endregion


    }

那么,如果我怎样才能将具有相似部门下拉列表的第一行和第三行的总和设为 36+45。

我想要这种情况的逻辑。

4

1 回答 1

1

因此,如果我理解正确,您需要以下内容:

var result = m_Project.projdepthrs.Where(md=> md.DEPARTMENT == department)
                                    .Sum(ms=> Convert.ToInt32(ms.TMH));

如果我误解了,请发表评论。

于 2013-09-10T07:26:49.937 回答