找回密码
 立即注册

QQ登录

只需一步,快速开始

sanyoumed

初级会员

40

主题

132

帖子

322

积分

初级会员

积分
322

活字格认证微信认证勋章

sanyoumed
初级会员   /  发表于:2014-7-7 23:25  /   查看:5387  /  回复:5
环境:Visual studio 2010  
项目:Winforms

代码如下:

Dim procode As String
                Dim sel As Integer

                For i As Integer = 1 To fg1.Rows.Count - 1
                    procode = fg1.GetData(i, "物料编号")
                    sel = fg1.GetData(i, "选择")
                Next

现象:“选择” 列 数据类型为 Boolen,且看上去已选中(打勾),但 sel的值为-1,为何不是1呢?

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-7-8 10:42:00
沙发
回复 1楼sanyoumed的帖子

对于类型为Boolean的列,获得的值会是True或False。
我测试了你1楼的代码,已选中的时候FlexGrid.GetData方法获得True值,这是正确的。

请你做如下检查:
1.是不是GetData里传递的两个参数不正确?FlexGrid.GetData里面的两个参数是(int row, string colName),colName指的是列名,列名需要通过FlexGrid.Cols[int].Name提前设置。

我的测试代码如下,给你参考:
  1. Column checkboxCol = c1FlexGrid1.Cols(1)
  2. checkboxCol.DataType = typeof(Boolean)
  3. checkboxCol.Caption = "选择"
  4. '下面这句代码用来设置列名
  5. checkboxCol.Name = "选择"
  6. checkboxCol.Width = 75
  7. '设置选择列第一行的值为true
  8. c1FlexGrid1(1, "选择") = True

  9. Dim sel As String
  10. For i As Integer = 1 To fg1.Rows.Count - 1
  11.       '获取选择列的值,第一行的值为True
  12.       sel = c1FlexGrid1.GetData(i, "选择").ToString()
  13. Next
复制代码

评分

参与人数 1满意度 +4 收起 理由
sanyoumed + 4 问题暂时得到解决。

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
dennis
葡萄城公司职员   /  发表于:2014-7-8 11:43:00
板凳
当 Visual Basic 将数字数据类型值转换为 Boolean 时,0 变为 False,所有其他值变为 True。 当 Visual Basic 将 Boolean 值转换为数字类型时,False 变为 0,True 变为 -1。

评分

参与人数 1金币 +200 收起 理由
Alice + 200 帮助回答问题,奖励。

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-8 14:13:00
地板
回复 3楼dennis的帖子

强转的时候,VB.Net下Boolean的True值会转成-1,是VB的机制,不是我们控件设置的。
你可以尝试如下VB代码,获得的值是-1:
  1. Dim sel As Integer
  2.         sel = True
  3.         Console.WriteLine(sel)
复制代码


我们的GetData方法得到的值是True、False,然后你做了强转,转成了-1。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
sanyoumed
初级会员   /  发表于:2014-7-8 15:10:00
5#
嗯,是的。其实我代码中真正的问题是明明打勾了,但得到的是 FALSE。以上我的代码似乎没有把我的问题提炼出来。
经代码监视,发现中途有重写flexgrid 了。整个运行过程造成了虽然打勾,得到的是FALSE的错觉。
不过你的提示还是有用的,谢谢。

评分

参与人数 1金币 +200 收起 理由
Alice + 200 自己跟踪解决问题,值得赞赏。

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-8 18:22:00
6#
回复 5楼sanyoumed的帖子

别客气。欢迎有问题交流。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部