找回密码
 立即注册

QQ登录

只需一步,快速开始

CanYou1

高级会员

45

主题

227

帖子

1359

积分

高级会员

积分
1359

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

CanYou1
高级会员   /  发表于:2015-10-15 16:42  /   查看:9727  /  回复:11
为什么C1DataGrid.BeginNewRow()方法执行后再执行ScrollViewer.ScrollToTop()方法让其回到顶端会没有效果?

Demo如下:



代码:



附:我验证过,之所以ScrollToTop()没有效果是受了BeginNewRow()影响的,但我因为业务需求又不能撤掉BeginNewRow()语句,所以烦请看看怎么办?

本帖子中包含更多资源

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

x

11 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-10-15 17:59:00
沙发
回复 1楼CanYou1的帖子

谢谢对该问题的反馈。
从你的描述来看,BeginNewRow会添加一个新行,焦点会在新行上,等待你的数据,该行如果是在最后,因此不能跳到最上面。
为了帮助你解决问题,我还有一些地方需求请教。
你的需求是要开始一个新行,还不输入,就立即要跳到最顶端的位置么?BeginNewRow本身的设计就是添加新行,为了添加新数据,我不太理解你这里的作用又是什么呢?
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-10-16 09:50:00
板凳
回复 2楼Alice的帖子

需求是这样,我们的客户要求页面打开时,C1DataGrid为空时要把第一行显示出来,让用户可以直接在列里填内容,而不要非得等用户双击“点击此处新增一行”才出现第一行数据。我的方案就是在页面刚打开时,如果列表为空,则执行BeginNewRow()语句,使其第一行显示出来,达到我们客户的目的。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-10-16 13:48:00
地板
回复 3楼CanYou1的帖子

你可以让其离开编辑状态,就可以跳转到顶端。
但这种方式,都需要提交一行。比如调用完BeginNewRow后,调用EndEditRow或是EndNewRow方法,让其离开编辑状态。
比如:
  1. datagrid.BeginNewRow();
  2.             datagrid.EndEditRow(true);
  3.             //datagrid.EndNewRow(true);
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-10-16 14:11:00
5#
回复 4楼Alice的帖子

这是不可以的!应该同用户自己来决定是否要提交这个新行,而不行程序自动提交,不然不就乱了吗?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-10-16 14:41:00
6#
回复 5楼CanYou1的帖子

如果按照这样的逻辑,调用BeginNewRow方法后,若是想要离开编辑状态,只能选择提交一行或是取消该行后,才能进行其他的操作。
因此针对你的业务逻辑,很抱歉和我们的产品设计是冲突的。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-10-16 15:24:00
7#
回复 2楼Alice的帖子

需求是这样,我们的客户要求页面打开时,空列表要把第一行显示出来,让用户可以直接在列里填内容,而不要非得等用户双击“点击此处新
CanYou1 发表于 2015-10-16 9:50:00


那你有没有别的办法实现我们的客户这样的需求?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-10-16 17:54:00
8#
回复 7楼CanYou1的帖子

很抱歉,BeginNewRow的方法的功能是会使得当前单元格展示在可视区域。
在这种情况下无法跳转。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-10-18 09:23:00
9#
回复 8楼Alice的帖子

Alice,我在7楼问的问题是你有没有别的办法实现我3楼所述的需求,并不是一定要求用BeginNewRow()方法(这只是我自己想的方案),你们作为C1DataGrid的提供商,有没有办法实现C1DataGrid为空时,将第一行显示出来?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-10-19 09:25:00
10#
回复 9楼CanYou1的帖子

很抱歉给你带来的不便,我们对你的问题又进行了调查和研究。
目前我们觉得能提供的方案就是:可以在代码中间添加LastC1DataGrid.UpdateLayout();方法。
作为厂商,我们尽最大的努力为你提供控件提高效率,然而没有万能的控件,还望理解。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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