如何从gridview计算选定的CheckBox

时间:2011-11-03 04:39:17

标签: c#

在我的网格中,我有复选框,网格旁边有一个按钮。当我点击按钮时,我想只获得网格中带复选框的选定行的计数。我们怎么做?

在我的网格视图中动态创建复选框和其他列,我有网站ID列,我需要获取网站ID,检查复选框是什么。

我使用此编码

int count = dataGridView1.Rows.Count;
for (int i = 0; i < count; i++)
{
   int j = dataGridView1.SelectedCells[i].RowIndex;
   clsSaveStatic.SiteID = int.Parse(dataGridView1.Rows[j].Cells[1].Value.ToString();
}

最后返回选中哪个复选框。 但我的要求是我需要逐一检查的所有值。

4 个答案:

答案 0 :(得分:1)

好了,现在我把一些代码示例我以前用来做同样的工作,我的代码部分可能对你有用

private List<int>() GetSiteId()
{
    var listIds=new List<int>();

    for (int i = 0; i < grid1.RowCount - 1; i++)
    {
        if (grid1.Rows[i].Cells["SelectCol"].Value != null)
        {
            bool value = Convert.ToBoolean(grid1.Rows[i].Cells["SelectCol"].Value);
            if (value)
            {
                 listId.Add(Convert.ToInt32(grid1.Rows[i].Cells["SiteID"].Value));
            }
        }
    }
    return listId;
}

所以如果value = true则检查

答案 1 :(得分:1)

多德。

Heres就是我所做的:

从Grid中设置CellValueChanged事件以检查“true / false”值。

            if (DataGridView.Rows.Count > 0)
            {
                if ((bool)DataGridView.Rows[e.RowIndex].Cells[0].Value)
                { VarToControlCount++; }
                else if ((bool)DataGridView.Rows[e.RowIndex].Cells[0].Value == false)
                { VarToControlCount--; }

                Label.Text = "Selecionados: " + VarToControlCount.ToString("00");

如果复选框中的值在每次更改时都为真,则会识别。

THEN ...

要“刷新”计数,只需将焦点设置在另一个单元格上即可。好吧,我想出的唯一方法就是在用户检查DGV中的某些内容时发送“TAB”。

在DGV的“CellClick”活动中你会这样做:

SendKeys.Send("{TAB}");

DONE。这是我强制刷新的唯一方法。简单而干净,但效果很好。

查看它的外观:

答案 2 :(得分:0)

您可以参考以下链接

http://www.codeproject.com/Answers/135987/Getting-Checkbox-value-from-DataGridView#answer4 http://stackoverflow.com/questions/1237829/datagridview-checkbox-column-value-and-functionality

答案 3 :(得分:0)

您必须遍历DataGridView的行并检查复选框单元格

foreach (DataGridViewRow item in dataGridView1.Rows)
{
       //if checkbox is checked
       if(Convert.ToBoolean((item.Cells["Chkboxcolname"] as DataGridViewCheckBoxCell).FormattedValue))
              // here you can access values based on column names
              //item.Cells["Idcolumn"].FormattedValue
}

现在,如果检查了单元格,那么当评估为布尔值时,单元格的值将为true