找回密码
 立即注册

QQ登录

只需一步,快速开始

DCAgile

中级会员

83

主题

247

帖子

794

积分

中级会员

积分
794

活字格认证微信认证勋章元老葡萄

DCAgile
中级会员   /  发表于:2021-9-2 10:12  /   查看:4369  /  回复:15
1金币
代码:this.C1FlexGrid1.DataSource = TestList;
C1FlexGrid1.Select(C1FlexGrid1.Rows.Count - 1, 0, C1FlexGrid1.Rows.Count - 1, 0, true);


问题:C1FlexGrid1数据多自动加载滚动条,使用以上代码给C1FlexGrid1赋值并默认选中最后一行记录,但因DataSource赋值默认选中第一行,最终的效果是先选中第一行、再选中最后一行,造成滚动条跳动的视觉效果

期望:DataSource赋值不默认选中第一行记录

最佳答案

查看完整内容

我上传了一个示例demo,供您参考

15 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-2 10:12:20
来自 8#
我上传了一个示例demo,供您参考


本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-2 10:57:58
2#
可以尝试一下用beginupdate来禁止刷新,然后再绑定数据,设置选中行
  1.             c1FlexGrid1.BeginUpdate();
  2.            //绑定数据
  3.            //选中行
  4.             c1FlexGrid1.EndUpdate();
复制代码
回复 使用道具 举报
DCAgile
中级会员   /  发表于:2021-9-2 11:23:12
3#
Richard.Ma 发表于 2021-9-2 10:57
可以尝试一下用beginupdate来禁止刷新,然后再绑定数据,设置选中行

按照你说的处理后确实不默认选中第一行、但是虽然代码处理选中最后一行,滚动条仍在最上面,还需要拉一下滚动条到最下,才能看见选中行
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-2 12:28:26
4#
那你可以先将滚动条隐藏,选中最后一行后再将滚动条显示

  1.             c1FlexGrid1.ScrollBars = ScrollBars.None;
  2.             BindingList<Product> blist = MyData.GetProductList(200000);
  3.             c1FlexGrid1.DataSource = blist;

  4.             c1FlexGrid1.Select(c1FlexGrid1.Rows.Count - 1, 0, c1FlexGrid1.Rows.Count - 1, 0, true);
  5.             c1FlexGrid1.ScrollBars = ScrollBars.Both;
复制代码
回复 使用道具 举报
DCAgile
中级会员   /  发表于:2021-9-2 13:41:49
5#
Richard.Ma 发表于 2021-9-2 12:28
那你可以先将滚动条隐藏,选中最后一行后再将滚动条显示

c1FlexGrid1.ScrollBars = ScrollBars.None;
this.c1FlexGrid1.DataSource = WaxList;   
c1FlexGrid1.Select(c1FlexGrid1.Rows.Count - 1, 0, c1FlexGrid1.Rows.Count - 1, 0, true);
c1FlexGrid1.ScrollBars = ScrollBars.Both;

按照你说的这么做(详见以上代码),c1FlexGrid1已经有很多数据且滚动条已出现的情况下,再次赋值WaxList(数据更多)时滚动条会先到最上、再到最下面一行,还需要加你之前说的禁止刷新代码吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-2 14:41:23
6#
你好,这边验证了以下,第一次加载并选中最后一行闪烁问题目前暂时没有什么好的办法,2楼发给你的beginupdate除了首次绑定数据时,会导致无法滚动外,再次更改数据时,就不会在发生闪烁现象了,滚动条会到最下面

因此,建议第一次加载时正常加载。(不影响选中最后一行,但是会有闪烁)
后面就使用2楼的代码来进行加载BeginUpdate/EndUpdate

回复 使用道具 举报
DCAgile
中级会员   /  发表于:2021-9-2 15:29:39
7#
Richard.Ma 发表于 2021-9-2 14:41
你好,这边验证了以下,第一次加载并选中最后一行闪烁问题目前暂时没有什么好的办法,2楼发给你的beginupda ...

cfgWaxBlockList.BeginUpdate();
cfgWaxBlockList.ScrollBars = ScrollBars.None;
this.cfgWaxBlockList.DataSource = WaxList;
cfgWaxBlockList.Select(cfgWaxBlockList.Rows.Count - 1, 0, cfgWaxBlockList.Rows.Count - 1, 0, true);
cfgWaxBlockList.ScrollBars = ScrollBars.Both;
cfgWaxBlockList.EndUpdate();

代码如上,我每操作一次刷新数据,滚动条总会上到下跳动一下,不是只有第一次会闪烁,请问你说的只有第一次闪烁,后面滚动条直接到最下面是?
回复 使用道具 举报
DCAgile
中级会员   /  发表于:2021-9-3 09:15:58
9#
Richard.Ma 发表于 2021-9-2 17:16
我上传了一个示例demo,供您参考

请问与C1FlexGrid的版本有关系吗?用你的实例没问题,但是同样的代码在我的项目中滚动条还是跳动,我项目中的C1FlexGrid版本是Version=4.0.20151.38
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-3 10:36:53
10#
嗯,从2015到2021差了6个大版本,这中间很多问题进行了修复,其中的一些功能也有更改,

如果老版本无法支持的话,目前只能建议您升级到最新的版本
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部