Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带EvenProvider的Vaadin日历在更改时不刷新数据_Vaadin_Vaadin7 - Fatal编程技术网

带EvenProvider的Vaadin日历在更改时不刷新数据

带EvenProvider的Vaadin日历在更改时不刷新数据,vaadin,vaadin7,Vaadin,Vaadin7,我正在将Vaadin日历组件与EventProvider一起使用。它在显示时正确加载项目,但当我编辑日历项目时,它不会在屏幕上反映更改。标题名称更改或日期更改我甚至在条目更新cal.setEventProviderp后再次尝试设置提供程序;但它并不强制日历从提供者获取新数据。有没有关于如何使用EventProvider并在日历上更新条目的提示 在Vaadin 7.1之前,我遇到了一个非常类似的问题,并且发现它不能正常工作。我不记得所有的细节,但我的调查显示getEvents方法存在问题。为了解决

我正在将Vaadin日历组件与EventProvider一起使用。它在显示时正确加载项目,但当我编辑日历项目时,它不会在屏幕上反映更改。标题名称更改或日期更改我甚至在条目更新cal.setEventProviderp后再次尝试设置提供程序;但它并不强制日历从提供者获取新数据。有没有关于如何使用EventProvider并在日历上更新条目的提示

在Vaadin 7.1之前,我遇到了一个非常类似的问题,并且发现它不能正常工作。我不记得所有的细节,但我的调查显示getEvents方法存在问题。为了解决这个问题,我用自己的类将ContainerEventProvider子类化,并实现了对getEvents的重写:


您可能想共享一些代码?请共享代码。光看解释是很难理解的。
@Override
public List<CalendarEvent> getEvents(Date startDate, Date endDate) {
    eventCache.clear();

    // int[] rangeIndexes = getFirstAndLastEventIndex(startDate, endDate);
    for (int i = 0; i < container.size(); i++) {
        eventCache.add(getEvent(i));
    }
    return Collections.unmodifiableList(eventCache);
}
public void setCalendarContainerDataSource(Indexed ds) {
    // this.vaadinCal.setContainerDataSource(ds); // this did't work
    MyCalendarContainerEventProvider provider = new MyCalendarContainerEventProvider(ds);
    provider.addEventSetChangeListener(new CalendarEventProvider.EventSetChangeListener() {

        public void eventSetChange(EventSetChangeEvent changeEvent) {
            vaadinCal.markAsDirty();
        }
    });
    provider.addEventChangeListener(new EventChangeListener() {

        public void eventChange(EventChangeEvent changeEvent) {
            // Repaint if event changes
            vaadinCal.markAsDirty();
        }
    });
    vaadinCal.setEventProvider(provider);
}