判断dataGridView中checkbox的状态

dataGridView中的checkbox的判断,不是我们在使用checkbox的check的事件。

对于dataGridView来说,checkbox是一种值。

通过遍历来设置选中状态
 foreach (DataGridViewRow dr in dataGridView.Rows)      
{
dr.Cells["选择"].Value = true;
}


如果要判断状态的话,需要进行下类型上的转换,

判断checkbox的状态
        /// <summary>
/// 判断DataGridView中是否有CheckBox选中
/// </summary>
/// <returns>出现选中的次数</returns>
private int JudgeDataGridViewINCheckBox()
{
int i = 0;
foreach (DataGridViewRow dr in dataGridViewOne.Rows)//要遍历下dataGridView的行
{
if (dr.Cells["选择"].Value!=null)//判断下checkbox的值是否为空,如果没有选中的话(如数据刚刚加载的时候),value是不会有false和true的
{
bool b = (bool)dr.Cells["选择"].Value;//value的类型是object的,需要转换下
if (b)
{
i++;
}
}
}
return i;
}

 

可以用这个方法获取checkbox选中的多个行

获得选中行的索引
        /// <summary>
/// 判断DataGridView中是否有CheckBox选中,如果有返回,则返回CheckBox选中的次数。存储选中CheckBox行的索引
/// </summary>
/// <returns>出现选中的次数</returns>
private List<Int32> JudgeDataGridViewINCheckBox()
{
List<Int32> Listint = new List<int>();
foreach (DataGridViewRow dr in dataGridViewOne.Rows)//要遍历下dataGridView的行
{
if (dr.Cells["选择"].Value!=null)//判断下checkbox的值是否为空,如果没有选中的话(如数据刚刚加载的时候),value是不会有false和true的
{
bool b = (bool)dr.Cells["选择"].Value;//value的类型是object的,需要转换下
if (b)
{
Listint.Add(dr.Index);
}
}
}
return Listint;
}
读取选中行的ID
                for (int i = 0; i < JudgeDataGridViewINCheckBox().Count; i++)
{
List<Int32> list = JudgeDataGridViewINCheckBox();
labelStatus_One.Text = dataGridViewOne.Rows[list[i]].Cells["发放月份"].Value.ToString();
}

通过类似的方式,就能操作多个行了

 

 

posted @ 2012-03-11 13:40  Sky.Grain  阅读(509)  评论(0编辑  收藏  举报