【问题标题】:How to get the total checked checkbox in a single column of gridview and show it into a label如何在gridview的单列中获取总选中复选框并将其显示到标签中
【发布时间】:2016-02-01 19:42:26
【问题描述】:

我需要一些帮助。我主要搜索网站,但没有找到我的查询所需的代码。 我正在为窗口应用程序中的“课堂出勤”模块进行编码,这里我有一个网格视图,其中包含学生姓名(文本框列)、卷号(文本框列)、存在(复选框列)、缺席(复选框列)、休假(复选框列)。

  1. 我只想连续选中一个复选框。
  2. 我想在一个标签中显示当前学生总数(表示“当前复选框”列选中复选框的总数)。

任何建议将不胜感激。 GridView ScreenShot

【问题讨论】:

  • 如果你以这种方式呈现它会更容易可视化。似乎“存在”和“不存在”复选框都是多余的 - 如果未选中“存在”,则默认情况下它们不存在。
  • 感谢这个好建议,但也有“休假”状态。因此,如果我们为学生的每个状态(即在场、缺席或休假)设置不同的复选框,这看起来不错。

标签: c# gridview checkbox desktop-application


【解决方案1】:

您可以使用它来计算所有在场的学生(如评论中所述,如果有人不在场,则默认情况下他们不在场)

   int present = 0;
   foreach (DataRow row in Students.Rows)
        {

           if (Student[row][2].Checked)//where i is the column in the datagridview
            {
                present++
            } 
        }

至于只勾选一个框,参考这个Post on StackOverflow

【讨论】:

  • 感谢您的帮助,我在 StackOverflow 上的 Post 中找到了所需的方法,用于连续选中一个复选框。当我尝试上面的代码时,请解释一下 if (Student[row][2].Checked) 中的“学生”是什么
  • 太棒了。如果您在解决方案中使用它,请务必对我链接的帖子中的答案投赞成票
【解决方案2】:

我自己通过以下代码找到了答案: 首先,我在gridview中将checkBox True值设置为1,false设置为0。并应用以下代码:-

 private int countPresenttudents()
    {
        int d = 0, e = 0;

        for (int i = 0; i < (dgvAttendance.Rows.Count - 1); i++)
        {
            d = Convert.ToInt32(dgvAttendance.Rows[i].Cells["Absent"].Value.ToString());
            e = e + d; //storing total qty into variable 
        }
        return e;
    }

并将其应用到标签上-

private void btnGetTotal_Click(object sender, EventArgs e)
    {
        try
        {
            lblPresent.Text = Convert.ToString(countpresent());
            lblAbsent.Text = Convert.ToString(countabsent());
            lblLeave.Text=Convert.ToString(countleave());
        }
        catch
        {
        }
    }

【讨论】:

  • 请帮助一件事,有时单元格值显示为 false 的 null 有时为 0(因为我在其属性中设置了 0)。因此,null 值不能转换为 int。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多