为什么BeginNewRow()方法执行后再执行ScrollToTop()方法让其回到顶端会没有效查?
为什么C1DataGrid.BeginNewRow()方法执行后再执行ScrollViewer.ScrollToTop()方法让其回到顶端会没有效果?Demo如下:
代码:
附:我验证过,之所以ScrollToTop()没有效果是受了BeginNewRow()影响的,但我因为业务需求又不能撤掉BeginNewRow()语句,所以烦请看看怎么办? 回复 1楼CanYou1的帖子
谢谢对该问题的反馈。
从你的描述来看,BeginNewRow会添加一个新行,焦点会在新行上,等待你的数据,该行如果是在最后,因此不能跳到最上面。
为了帮助你解决问题,我还有一些地方需求请教。
你的需求是要开始一个新行,还不输入,就立即要跳到最顶端的位置么?BeginNewRow本身的设计就是添加新行,为了添加新数据,我不太理解你这里的作用又是什么呢? 回复 2楼Alice的帖子
需求是这样,我们的客户要求页面打开时,C1DataGrid为空时要把第一行显示出来,让用户可以直接在列里填内容,而不要非得等用户双击“点击此处新增一行”才出现第一行数据。我的方案就是在页面刚打开时,如果列表为空,则执行BeginNewRow()语句,使其第一行显示出来,达到我们客户的目的。 回复 3楼CanYou1的帖子
你可以让其离开编辑状态,就可以跳转到顶端。
但这种方式,都需要提交一行。比如调用完BeginNewRow后,调用EndEditRow或是EndNewRow方法,让其离开编辑状态。
比如:
datagrid.BeginNewRow();
datagrid.EndEditRow(true);
//datagrid.EndNewRow(true); 回复 4楼Alice的帖子
这是不可以的!应该同用户自己来决定是否要提交这个新行,而不行程序自动提交,不然不就乱了吗? 回复 5楼CanYou1的帖子
如果按照这样的逻辑,调用BeginNewRow方法后,若是想要离开编辑状态,只能选择提交一行或是取消该行后,才能进行其他的操作。
因此针对你的业务逻辑,很抱歉和我们的产品设计是冲突的。 回复 2楼Alice的帖子
需求是这样,我们的客户要求页面打开时,空列表要把第一行显示出来,让用户可以直接在列里填内容,而不要非得等用户双击“点击此处新
CanYou1 发表于 2015-10-16 9:50:00 http://gcdn.gcpowertools.com.cn/images/common/back.gif
那你有没有别的办法实现我们的客户这样的需求? 回复 7楼CanYou1的帖子
很抱歉,BeginNewRow的方法的功能是会使得当前单元格展示在可视区域。
在这种情况下无法跳转。 回复 8楼Alice的帖子
Alice,我在7楼问的问题是你有没有别的办法实现我3楼所述的需求,并不是一定要求用BeginNewRow()方法(这只是我自己想的方案),你们作为C1DataGrid的提供商,有没有办法实现C1DataGrid为空时,将第一行显示出来? 回复 9楼CanYou1的帖子
很抱歉给你带来的不便,我们对你的问题又进行了调查和研究。
目前我们觉得能提供的方案就是:可以在代码中间添加LastC1DataGrid.UpdateLayout();方法。
作为厂商,我们尽最大的努力为你提供控件提高效率,然而没有万能的控件,还望理解。
页:
[1]
2