如何从gridview中计算选中的CheckBox
本文关键字:CheckBox 计算 gridview | 更新日期: 2023-09-27 18:13:28
在我的网格中,我有复选框,我有一个按钮在网格的外面。当我单击按钮时,我想要获得网格中带有复选框的仅选定行的计数。我们怎么能做到呢?
在我的网格视图动态创建复选框和其他列,我有站点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();
}
它返回最后哪个复选框被选中。但是我的要求是所有选中的值我需要一个一个
现在我放一些我以前用过的代码例子来做同样的工作我的部分代码可能对你有用
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它就被选中了
您必须遍历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
老兄。
我是这样做的:
设置来自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");
这将标识复选框中的值是否在每次更改时都为true。
然后……
要"刷新"计数,只需将焦点设置在另一个单元格上。嗯,我想出的唯一方法就是当用户在DGV中检查某些东西时发送一个"TAB"。
在DGV的"CellClick"事件中你要这样做:
SendKeys.Send("{TAB}");
。这是我唯一能强迫自己清醒的方法。简单干净,但效果很好。
查看效果:
您可以参考以下链接
http://www.codeproject.com/Answers/135987/Getting-Checkbox-value-from-DataGridView answer4http://stackoverflow.com/questions/1237829/datagridview-checkbox-column-value-and-functionality