在我的网格中,我有复选框,网格旁边有一个按钮。当我点击按钮时,我想只获得网格中带复选框的选定行的计数。我们怎么做?
在我的网格视图中动态创建复选框和其他列,我有网站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();
}
最后返回选中哪个复选框。 但我的要求是我需要逐一检查的所有值。
答案 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