datagridviewcheckboxcolumn问题

youcaicai 2008-04-08 09:42:13
比如数据有一张表
--表1
编号 状态
A001 是
A002 否
A003 是
......

希望通过动态绑定数据到DATAGRIDVIEW中,第二列为datagridviewcheckboxcolumn,在网上查了很多资料,都只有如何获取选中值的,却没有设置选中状态的,不知道要如何做
...全文
417 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
youcaicai 2008-04-09
  • 打赏
  • 举报
回复
分肯定是要给的,只是想多和大家讨论一下该控件的用法.
区别也是有地,如果完全按三四楼的代码的话是达不到实现效果的,主要是一些细节方面的东西没搞清楚.
ping502 2008-04-09
  • 打赏
  • 举报
回复
樓主。你的代碼跟三樓和四樓的沒什麼區別。。人家幫你解決了問題,是否該給分了暱?
_NET2004 2008-04-09
  • 打赏
  • 举报
回复
学习一下,正在努力
youcaicai 2008-04-09
  • 打赏
  • 举报
回复
还有一个问题是,在DATAGRIDVIEW中点字段排序后,CHECKBOX列不会按相应数据的改变而改变,不知道如何解决
youcaicai 2008-04-09
  • 打赏
  • 举报
回复
关键是DataPropertyName = "状态"这个属性的设置,要与数据源的绑定字段一样,否则不能达到想要的效果
boblaw 2008-04-09
  • 打赏
  • 举报
回复
這和6樓的代碼沒有什么區別
youcaicai 2008-04-09
  • 打赏
  • 举报
回复
已经自己解决了,参考了一个国外的例子,我把代码帖出来分享一下

'--dv 是 dataview
'--db 是数据库接口类
'--dgplanlist是datagridview

dv = db.RunSelectSQL("select 状态, 编号 from 计划表")
DGPlanList.DataSource = dv.Table.DefaultView()
DGPlanList.Columns.Remove("状态")
Dim cbk As New DataGridViewCheckBoxColumn
cbk.HeaderText = "状态"
cbk.DataPropertyName = "状态"
cbk.TrueValue = 1
cbk.FalseValue = 0
DGPlanList.AutoGenerateColumns = False
DGPlanList.Columns.Insert(0, cbk)


在数据库中"状态"字段的值为0和1,特别说明的是在定义checkbox列时,一定要加cbk.DataPropertyName = "状态",之前做的因为这里没设置,所以总是不能和数据绑在一起
youcaicai 2008-04-09
  • 打赏
  • 举报
回复
可能我的表述不太清楚,我的意思是要用程序的方法改变datagridviewcheckboxcell的选中状态(打勾或取消打勾)
boblaw 2008-04-08
  • 打赏
  • 举报
回复
如果不是bit(SQL Server)或者布尔型(Access),可以参考4楼
boblaw 2008-04-08
  • 打赏
  • 举报
回复
你的字段是什么类型?
youcaicai 2008-04-08
  • 打赏
  • 举报
回复
'假设你要设置的单元格是第0行,第3列
Dim cbCell As DataGridViewCheckBoxCell = CType(Me.dgfac.Item(3, 0), DataGridViewCheckBoxCell)
cbCell.Value = True 'True是选中,False是不选


这里只是改变了CBCELL的状态,但没有改变单元格中的CHECKBOX的状态
youcaicai 2008-04-08
  • 打赏
  • 举报
回复
就是在数据绑定后,状态为是的为选中状态,为否的则不选中
boblaw 2008-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 youcaicai 的回复:]
这样没用
[/Quote]
我的代码测试过的,不知道你是要什么效果
youcaicai 2008-04-08
  • 打赏
  • 举报
回复
这样没用
vlsm 2008-04-08
  • 打赏
  • 举报
回复
直接在myQuery语句里面获取可以吗?
select 编号,(case when 状态='是' then '1' else '0' end) from 表


cn = New MySqlConnection(myConnectionString)
myAdapter = New MySqlDataAdapter(myQuery, cn)
ds = New DataSet()
myAdapter.Fill(ds, "myTablei")
dataGridView1.DataSource = ds
dataGridView1.DataMember = "myTable"
dataGridView1.AutoGenerateColumns = False
dataGridView1.Columns.Remove("状态")
Dim myCheck As New DataGridViewCheckBoxColumn()
myCheck.HeaderText = "状态"
myCheck.DataPropertyName = "Extra"
myCheck.FalseValue = "1"
myCheck.TrueValue = "0"
dataGridView1.AutoGenerateColumns = False
dataGridView1.Columns.Insert(1, myCheck)
cn.Close()



boblaw 2008-04-08
  • 打赏
  • 举报
回复
如果你要写代码动态设置一个DataGridViewCheckBoxCell的选中状态,参考下面的代码

'假设你要设置的单元格是第0行,第3列
Dim cbCell As DataGridViewCheckBoxCell = CType(Me.dgfac.Item(3, 0), DataGridViewCheckBoxCell)
cbCell.Value = True 'True是选中,False是不选

youcaicai 2008-04-08
  • 打赏
  • 举报
回复
程序如下:
cn = new MySqlConnection(myConnectionString);
myAdapter = new MySqlDataAdapter(myQuery, cn);
ds = new DataSet();
myAdapter.Fill(ds, "myTablei");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "myTable";
dataGridView1.AutoGenerateColumns = false;
dataGridView1.Columns.Remove("状态");
DataGridViewCheckBoxColumn myCheck = new DataGridViewCheckBoxColumn();
myCheck.HeaderText = "状态";
myCheck.DataPropertyName = "Extra";
myCheck.FalseValue = "1";
myCheck.TrueValue = "0";
dataGridView1.AutoGenerateColumns = false;
dataGridView1.Columns.Insert(1, myCheck);
cn.Close();

应该如何根据数据更改DATAGRIDVIEW中的CHECKBOX是否选中状态
boblaw 2008-04-08
  • 打赏
  • 举报
回复
数据绑定时,如果数据字段是bit(SQL Server)或者布尔型(Access),会自动依记录的值选中或者不选中

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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