yinzhm 发表于 2014-9-16 10:48:00

MultiRow有没有试图(类似Spread的view)的概念?

好!
MultiRow for winforms 7.0 sp3
问题:
插入新行的时候,活动行会跟着移动。这是multirow的动作。当数据超过一页的时候,前面的数据就会向上滚动。
需求:
在插入数据的过程中,不希望看到数据一直向上滚动,甚至看不到数据也可以。将所有数据都插入完成之后,再将数据显示出来。
疑问:
(1)suspendlayout可以控制控件的重绘,但貌似不是所有的重绘都能控制,希望了解一下XXXXXlayout究竟能控制什么,可以具体点吗,比如活动单元格背景色的重绘等等这种粒度,非常感谢。很迷惑,很多时候suspendlayout达不到预期的效果。
(2)Spread的activecell和activeview是可以分别控制的,比如一页最大5行,activecell的rowindex为8,activeview的toprow可以设置为0.multirow有类似的实现方式吗?不吝赐教,谢谢!

dafo 发表于 2014-9-16 15:51:00

我不是很清楚你是怎么插入新行的,是通过数据源吗?
用this.gcMultiRow1.Rows.Add();是不会滚动的。

MutliRow中如果CurrentCell位置改变,是会自动滚动的,这个没有办法禁掉。
你可以通过下边的事件重定向CurrentCell的位置,这样MultiRow就不会滚动了。

            this.gcMultiRow1.NewCellPositionNeeded += new EventHandler<GrapeCity.Win.MultiRow.NewCellPositionNeededEventArgs>(gcMultiRow1_NewCellPositionNeeded);


      void gcMultiRow1_NewCellPositionNeeded(object sender, GrapeCity.Win.MultiRow.NewCellPositionNeededEventArgs e)
      {
            e.NewCellPosition = new GrapeCity.Win.MultiRow.CellPosition(0, 0);
      }


关于你的问题:
(1)MultiRow的SuspendLayout是系统Control的默认实现,没有特殊处理,请参考DataGridView.
(2)MultiRow没有ActiveView的概念,非常抱歉。

yinzhm 发表于 2014-9-17 19:01:00

回复 2楼dafo的帖子

Rows.add确实不会滚动。
造成滚动的原因是其他代码的原因。非常感谢。

关于(1)和(2),谢谢版主的回答,了解了。
(1)的话,我在查查DataGridView。
(2)的话,我以前也是用版主的方式实现的,但是这样会多触发几次cellenter , cellbeginedit ,cellleave,cellendedit等,造成部分逻辑多次执行,需要用其他方式规避掉。
当逻辑比较简单的时候,还好办。但是当逻辑复杂的时候,真是。。。。。

dafo 发表于 2014-9-18 09:12:00

关于第二个问题,我不知道你是否是在做数据绑定,如果是数据绑定的话,你可以不将Table直接绑定到GcMultiRow,可以用ADO的TableView概念,在底层模拟View的东西,GcMultiRow只是为展示服务。

希望对你有帮助。

yinzhm 发表于 2014-9-18 16:14:00

回复 4楼dafo的帖子

谢谢!

想法很好,值得尝试一下。

Alice 发表于 2014-9-18 18:55:00

回复 5楼yinzhm的帖子

如果尝试后,可以将结果反馈给我们。
谢谢你最近一直来论坛,也一直支持我们的产品。

yinzhm 发表于 2014-9-18 20:41:00

回复 6楼Alice的帖子

好的,有结果一定反馈!

忠实用户啊,哈哈!

Alice 发表于 2014-9-19 12:11:00

回复 7楼yinzhm的帖子

呵呵,的确是啊。
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页: [1]
查看完整版本: MultiRow有没有试图(类似Spread的view)的概念?