找回密码
 立即注册

QQ登录

只需一步,快速开始

ddyTest

银牌会员

11

主题

28

帖子

2121

积分

银牌会员

积分
2121

活字格认证

ddyTest
银牌会员   /  发表于:2012-7-19 14:21  /   查看:7017  /  回复:7
我使用的是Spread 6 for winform 。我使用AddRows在指定位置插入行后,使用AcceptChanges对Spread的DataSource提交后,发现新增的行跑到最后了。请问这个问题如何解决?
Demo:

AddRowDemo.rar (102.43 KB, 下载次数: 571)

AddRowDemo.rar

102.43 KB, 下载次数: 527

7 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-19 18:07:00
沙发
ddyTest 你好

调用 AcceptChanges()之后,Spread中的数据就同步到DataTable中,然后DataTable中插入数据时都是插入在最后面,不会插入在中间,然后Spread会重新绑定DataTable中的数据,此时显示的顺序就发生变化了。
回复 使用道具 举报
ddyTest
银牌会员   /  发表于:2012-7-19 20:39:00
板凳
那有什么办法解决吗?因为如果如果不AcceptChanges,从Spread的DataSource取得copy中是没有新增的数据。
回复 使用道具 举报
ddyTest
银牌会员   /  发表于:2012-7-20 14:13:00
地板
:~, 有人能解决我的问题吗?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-20 15:02:00
5#
你可以给数据源在添加一列,该列是数据在Spread中的显示顺序,比如该列的列名为Rank,在Spread插入一行时就给该行设置Rank属性,并且对新行之后所有行的Rank值加1。
在给Spread加载数据时,指定排序方式是按照Rank升序排列。

这样来实现插入数据不会因为保存之后被改变。
回复 使用道具 举报
ddyTest
银牌会员   /  发表于:2012-7-20 15:12:00
6#
,唉,还是这种办法啊。本来我还想Spread是否有方法解决呢。唉,谢谢了。
回复 使用道具 举报
ddyTest
银牌会员   /  发表于:2012-7-20 15:45:00
7#
我想出解决方案,由于我的Spread的Datasource绑定的是DataTable,我直接在DataTable中使用Rows.InsertAt插入到指定位置就可以了。
我觉得Spread的AddRows有问题,明明文档中说明的是“向数据模型的指定位置增加行”,结果写入数据源后,还是写到最后一行了。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-20 18:31:00
8#
原因是这样的,通过AddRows方法也是给Spread添加行,不会在DataTable中对应行进行添加数据,所以插入之后还是在最后一行、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部