找回密码
 立即注册

QQ登录

只需一步,快速开始

Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-19 09:02:30
10#
不客气,我早上给你验证
回复 使用道具 举报
soulxj2020
初级会员   /  发表于:2020-5-19 15:06:23
12#
Richard.Ma 发表于 2020-5-19 11:03
验证了一下如果是要滚动来设置起始时间的话,可以使用下面的方式设置FirstVisibleTime,在AppointmentChang ...

谢谢回复。

经过测试,在AppointmentChanged事件中设置FirstVisibleTime来实现起始位置,基本上达到了需求,谢谢。

Scroll事件这个点,【c1Schedule1的滚动条设置为Visable后效果如下,也能触发滚动事件,但是本身因为并无滚动的场景,没什么用处】对于这部分内容还有些不理解。
1,哪里设置滚动条Visable属性?
2,无滚动场景怎么理解呢?  如果可以获取和设置滚动条的位置,说不定可以实现双c1Schedule位置同步。。。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-19 16:31:17
13#
设置代码如下:
  1.             c1Schedule1.HorizontalScroll.Visible = true;
  2.             c1Schedule1.VerticalScroll.Visible = true;
复制代码


但是设置后出现的外层滚动条,拖动并不会对内部的日历产生影响,你可以测试一下
你说到的双c1Schedule同步,如果是要同步时间的话那刚才的FirstVisibleTime属性就可以,如果还要同步日期的话
可以通过分析两个日历的日期,然后通过gotodate来实现

  1.             c1Schedule1.GoToDate(e.Appointment.Start.AddDays(7));
  2.             c1Schedule1.Refresh();
复制代码


回复 使用道具 举报
soulxj2020
初级会员   /  发表于:2020-5-19 16:58:44
14#
本帖最后由 soulxj2020 于 2020-5-19 17:00 编辑

外层滚动条设置后,可以显示了,果然没有什么影响。
看来这条路确实行不通了。
要是内层的滚动条提供事件处理就好了。。。

通过FirstVisibleTime属性来同步时间,刚才我尝试了一下,有点奇怪的地方。
c1ScheduleReport中app拖动数次,只有第一次拖动会同步c1SchedulePlan的显示时间(滚动位置)。
第二次开始,c1SchedulePlan就不会滚动同步了。

代码设置如下:
    事件绑定:

  1.             this.c1ScheduleReport.AppointmentChanged += new System.EventHandler<C1.C1Schedule.AppointmentEventArgs>(this.c1ScheduleReport_AppointmentChanged);
复制代码

    事件实现:
  1.         private void c1ScheduleReport_AppointmentChanged(object sender, AppointmentEventArgs _e)
  2.         {
  3.                 c1ScheduleReport.Settings.FirstVisibleTime = new TimeSpan(_e.Appointment.Start.Hour, _e.Appointment.Start.Minute, _e.Appointment.Start.Second);
  4.                 c1SchedulePlan.Settings.FirstVisibleTime = new TimeSpan(_e.Appointment.Start.Hour, _e.Appointment.Start.Minute, _e.Appointment.Start.Second);
  5.                 c1ScheduleReport.Refresh();
  6.                 c1SchedulePlan.Refresh();
  7.         }
复制代码



回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-19 18:49:43
15#
这个算是产品本身还有一点问题,请注意我上面的代码,实际上等于说是每次把ViewType 重置了,这样设置就有效了


  1.             if (c1Schedule1.ViewType == C1.Win.C1Schedule.ScheduleViewEnum.WorkWeekView)
  2.             {
  3.                 c1Schedule1.ViewType = C1.Win.C1Schedule.ScheduleViewEnum.WeekView;
  4.                 c1Schedule1.ViewType = C1.Win.C1Schedule.ScheduleViewEnum.WorkWeekView;
  5.             }
复制代码
回复 使用道具 举报
soulxj2020
初级会员   /  发表于:2020-5-20 09:56:49
16#
Richard.Ma 发表于 2020-5-19 18:49
这个算是产品本身还有一点问题,请注意我上面的代码,实际上等于说是每次把ViewType 重置了,这样设置就有 ...

谢谢。
刚才验证了一下,果然可以了。

虽然不能通过滚动条实时同步滚动,有点遗憾。
但目前这样算是基本实现了前面说的2个需求了。
非常感谢!
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-20 10:10:16
17#
不客气
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部