找回密码
 立即注册

QQ登录

只需一步,快速开始

zheng_hq

银牌会员

151

主题

391

帖子

2227

积分

银牌会员

积分
2227

活字格认证

zheng_hq
银牌会员   /  发表于:2011-10-26 15:42  /   查看:9284  /  回复:11
c1flexgrid2通过datasource连接了名为pl_demo的access数据库,共7列,按您说的c1flexgrid2的第8列以后就没有进行数据绑定,所以无法显示单元格计算的结果

那么可不可以这样做,在c1flexgrid1里面读取c1flexgrid2的数据,这样,就可以在c1flexgrid1的第8列以后就可以进行单元格计算并显示出来了
用了下面的语句

     For i As Int32 = 1 To C1FlexGrid2.Rows.Count
            C1FlexGrid1.SetData(i, 1, C1FlexGrid2.GetData(i, 1))  ‘这里报错'
        Next

但错误提示:未处理ArgumentOutofrangeException
                  索引超出范围。必须为非负值并小于集合大小
           参数名:index

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

11 个回复

倒序浏览
zheng_hq
银牌会员   /  发表于:2011-10-26 22:16:00
沙发
For i As Int32 = 1 To C1FlexGrid2.Rows.Count
            C1FlexGrid1.SetData(i, 1, C1FlexGrid2.GetData(i, 1))
           '加入下句后,问题解决'
            On Error Resume Next
      
Next

在网上查阅,有朋友说是"你的行溢出了,也许是你的Item的Row属性超出了最大值",可是设置
For i As Int32 = 1 To 90  
For i As Int32 = 1 To 20      
也报错(access数据库里一共是100行)

那么c1flexgrid的大行数,最大支持多少行呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-10-27 09:12:00
板凳
你在出错的语句加一个断点,查看出错时 i 的值,以及C1FlexGrid2.Rows.Count和C1FlexGrid1.Rows.Count分别是多少,看 i 是否超出了C1FlexGrid1.Rows.Count的范围
回复 使用道具 举报
zheng_hq
银牌会员   /  发表于:2011-10-27 09:31:00
地板
原帖由 dof 于 2011-10-27 9:12:00 发表
你在出错的语句加一个断点,查看出错时 i 的值,以及C1FlexGrid2.Rows.Count和C1FlexGrid1.Rows.Count分别是多少,看 i 是否超出了C1FlexGrid1.Rows.Count的范围


怎样写“加一个断点,查看出错时i的值”的语句呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-10-27 09:53:00
5#
在出错的代码行通过F9加一个断点,然后F5运行程序,每次执行到断点处就可以将鼠标移动到变量上查看变量的值:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zheng_hq
银牌会员   /  发表于:2011-10-27 10:05:00
6#

实在不懂呀,帮我看看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zheng_hq
银牌会员   /  发表于:2011-10-27 10:11:00
7#
哦,在Form1.Designet.vb里面
        'C1FlexGrid2
        '
        Me.C1FlexGrid2.ColumnInfo = resources.GetString("C1FlexGrid2.ColumnInfo")
        Me.C1FlexGrid2.DataSource = Me.PlBindingSource
        Me.C1FlexGrid2.Location = New System.Drawing.Point(20, 145)
        Me.C1FlexGrid2.Name = "C1FlexGrid2"
        Me.C1FlexGrid2.Rows.Count = 1   
        Me.C1FlexGrid2.Rows.DefaultSize = 20
        Me.C1FlexGrid2.Size = New System.Drawing.Size(167, 365)
        Me.C1FlexGrid2.TabIndex = 1

是不是这里的原因呢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-10-27 10:16:00
8#
你C1FlexGrid1加上固定行总共有50行,而在出错的时候你访问了C1FlexGrid1(50,1),超出了C1FlexGrid1的数据行数,你最大只能访问C1FlexGrid1(49,0)
回复 使用道具 举报
zheng_hq
银牌会员   /  发表于:2011-10-27 11:04:00
9#
原帖由 dof 于 2011-10-27 10:16:00 发表
你C1FlexGrid1加上固定行总共有50行,而在出错的时候你访问了C1FlexGrid1(50,1),超出了C1FlexGrid1的数据行数,你最大只能访问C1FlexGrid1(49,0)


增加一句

c1flexgrid1.Rows.Count = 200  

或者

c1flexgrid1.Rows.Count = c1flexgrid2.Rows.Count

错误依然,还是ArgumentOutOfRangeException
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-10-27 11:35:00
10#
记得要进行 -1 操作
        For i As Int32 = 1 To C1FlexGrid2.Rows.Count - 1            
                C1FlexGrid1.SetData(i, 1, C1FlexGrid2.GetData(i, 1))
        Next
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部