新人求助,分不多,DataGridViewCheckBoxColumn的问题

DoubleX4470 2015-04-09 11:14:21
DataGridViewCheckBoxColumn3列中只能选中一个,当选中一个的时候,其他的不选中,


比如说第一行,第一次勾选了管理员,当再勾选一般操作员的时候,管理员的勾选自动取消,怎么实现,但是两行之间不互相影响,只是一行只能勾选一个,当勾选一个,下次勾选其他的时候,之前勾选的自动取消勾选,麻烦贴下具体代码,谢谢了,新人
上述功能只是针对用户权限的这个 DataGridViewCheckBoxColumn

有没有给下代码怎么写,我是新人,具体点,谢谢了
...全文
98 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
DoubleX4470 2015-04-09
  • 打赏
  • 举报
回复
引用 1 楼 u012804018 的回复:
根据SelectRow遍历Cell有Check=true的你先False就OK了
能不能贴点代码,我是新人,谢谢了
鏡椛氹鈅 2015-04-09
  • 打赏
  • 举报
回复
根据SelectRow遍历Cell有Check=true的你先False就OK了
DoubleX4470 2015-04-09
  • 打赏
  • 举报
回复
引用 9 楼 andywangguanxi 的回复:

   foreach (DataGridViewCell a in this.dataGridView1.Rows[e.RowIndex].Cells)
            {
                if (a.Value != null)
                {
                    if (a.ColumnIndex >= 1 && a.ColumnIndex <= 3) //根据你自己列索引设置
                    {
                        if (a.Value.ToString() == "True")
                        {
                            a.Value = false;
                        }
                    }
                }
            }
很感谢,还是需要注释掉 if (a.Value.ToString() == "True") 然后加限制条件就能实现了,因为有个隐藏列从数据库中取值,谢谢你
DoubleX4470 2015-04-09
  • 打赏
  • 举报
回复
引用 10 楼 u012804018 的回复:
[quote=引用 4 楼 DoubleX4470 的回复:] [quote=引用 3 楼 u012804018 的回复:] 是这效果的话代码
 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            foreach (DataGridViewCell a in this.dataGridView1.Rows[e.RowIndex].Cells)
            {
                if (a.Value != null)
                {
                    if (a.Value.ToString() == "True")
                    {
                        a.Value = false;
                    }
                }
            }
        }
我按照你的代码运行后没有你上面的效果 但是我把 if (a.Value.ToString() == "True") 注释后就得到我要的效果了, 但是第一列的值变成了图中的那样,能不能告诉我这是为什么,谢谢了[/quote] 思路已经告诉你了,其余的实现过程,你自己一点一点摸索吧,首先要把代码的意思看懂....[/quote] 嗯 已经实现我想要的功能了,加个遍历循环条件就可以了,非常感谢
鏡椛氹鈅 2015-04-09
  • 打赏
  • 举报
回复
引用 4 楼 DoubleX4470 的回复:
[quote=引用 3 楼 u012804018 的回复:] 是这效果的话代码
 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            foreach (DataGridViewCell a in this.dataGridView1.Rows[e.RowIndex].Cells)
            {
                if (a.Value != null)
                {
                    if (a.Value.ToString() == "True")
                    {
                        a.Value = false;
                    }
                }
            }
        }
我按照你的代码运行后没有你上面的效果 但是我把 if (a.Value.ToString() == "True") 注释后就得到我要的效果了, 但是第一列的值变成了图中的那样,能不能告诉我这是为什么,谢谢了[/quote] 思路已经告诉你了,其余的实现过程,你自己一点一点摸索吧,首先要把代码的意思看懂....
EdsionWang 2015-04-09
  • 打赏
  • 举报
回复

   foreach (DataGridViewCell a in this.dataGridView1.Rows[e.RowIndex].Cells)
            {
                if (a.Value != null)
                {
                    if (a.ColumnIndex >= 1 && a.ColumnIndex <= 3) //根据你自己列索引设置
                    {
                        if (a.Value.ToString() == "True")
                        {
                            a.Value = false;
                        }
                    }
                }
            }
DoubleX4470 2015-04-09
  • 打赏
  • 举报
回复
引用 6 楼 andywangguanxi 的回复:
照理来说只要你第一列的值不是True的话,楼上提供的代码是没问题的。为什么你注释掉if (a.Value.ToString() == "True") 就出现先过了呢?你的数据是否从数据库取过来的。打个断点到循环内部,看看你每次点的那个单元格的值到底是什么
获取到的值是最后一列隐藏列的值,这个值是固定的“P00001”对应第一个系统名,第二列获取的值是“P00002”, 对应第二行的系统名,应该是要去掉这两列遍历上面的代码就没错了
DoubleX4470 2015-04-09
  • 打赏
  • 举报
回复
引用 5 楼 andywangguanxi 的回复:
楼上给的代码是遍历了正行的所有单元格,你可以再加一个if语句,将你第一列去除掉。
其实还有最后一列隐藏列,要怎写条件去掉这两列只在中间3列遍历呢 ? 麻烦了,新人不太懂
EdsionWang 2015-04-09
  • 打赏
  • 举报
回复
照理来说只要你第一列的值不是True的话,楼上提供的代码是没问题的。为什么你注释掉if (a.Value.ToString() == "True") 就出现先过了呢?你的数据是否从数据库取过来的。打个断点到循环内部,看看你每次点的那个单元格的值到底是什么
EdsionWang 2015-04-09
  • 打赏
  • 举报
回复
楼上给的代码是遍历了正行的所有单元格,你可以再加一个if语句,将你第一列去除掉。
DoubleX4470 2015-04-09
  • 打赏
  • 举报
回复
引用 3 楼 u012804018 的回复:

是这效果的话代码
 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
foreach (DataGridViewCell a in this.dataGridView1.Rows[e.RowIndex].Cells)
{
if (a.Value != null)
{
if (a.Value.ToString() == "True")
{
a.Value = false;
}
}
}
}





我按照你的代码运行后没有你上面的效果
但是我把 if (a.Value.ToString() == "True") 注释后就得到我要的效果了,
但是第一列的值变成了图中的那样,能不能告诉我这是为什么,谢谢了

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧