【问题标题】:How can I count the selected CheckBox from gridview如何从 gridview 计算选定的 CheckBox
【发布时间】:2011-12-20 21:05:21
【问题描述】:

在我的网格中,我有复选框,并且在网格外侧有一个按钮。当我单击按钮时,我想获取网格中带有复选框的仅选定行的计数。我们怎么能做到这一点?

在我的网格视图中动态创建复选框和其他列,我有站点 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();
}

它最终返回哪个复选框被选中。 但我的要求是我需要的所有检查值都一个一个。

【问题讨论】:

  • 不确定你想要什么值,所有选中的值都会有True
  • 我需要所有选中的行值

标签: c#


【解决方案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 则检查

【讨论】:

  • 此示例不适用于我的要求。所以请再举一个例子。
  • 它遍历行并获取检查值,你真正想要什么?一一是什么意思?
  • 在我的网格视图中动态绑定我有站点 ID 列的值我检查表单中的多个复选框什么是我需要的所有 SiteId 值的复选框选择
【解决方案2】:

您必须遍历 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

【讨论】:

    【解决方案3】:

    老兄。

    这就是我所做的:

    从 Grid 设置 CellValueChanged 事件以检查“真/假”值。

                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");
    

    如果复选框的值在每次更改时为真,这将标识。

    那么...

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

    在 DGV 的“CellClick”事件中,您将这样做:

    SendKeys.Send("{TAB}");
    

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

    看看它的样子:

    【讨论】:

      【解决方案4】:

      您可以参考以下链接

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

      【讨论】:

      • 请举一些其他的例子。请帮助我
      猜你喜欢
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多