0

我对 smartgwt 日历工具有疑问,我已经通过类日历的受保护方法 getdaybodyhtml() 对其进行了自定义,以在一个月中的某些日子分配特殊图标标志,除了在上显示日历时的一件事外,一切正常chrome(所有版本)IE(7,8,9)和FF(直到14.0.1),但是当我在FF(15到19之间)上显示日历时,不显示此标志图标。我对代码进行了跟踪,发现我在 getdaybodyhtml() 方法中定义的 html 代码没有打印出来。

我在 smartgwt 上寻找任何类似的问题,但我没有找到任何相关的东西。将收到任何帮助。(对不起,如果我的英语不太好,是我的第二语言)

这是一段代码:

private Calendar calendar = new Calendar(){
    @Override
    @SuppressWarnings("deprecation")
    protected String getDayBodyHTML(Date date, CalendarEvent[] events, Calendar calendar, int rowNum, int colNum) {
        String value = defaultMessage != null ? defaultMessage : date.getDate()+"";
        // The "events" are the events of the day
        List<CalendarEvent> calendarEvents =  new ArrayList<CalendarEvent>(Arrays.asList(events));
        if(calendarEvents != null && calendarEvents.size() > 0) {
            // Removing the tooltip and the excluded colours
            removeTooltipsFromCalendar(calendar,date);
            removeExcludedColoursFromCalendar(calendarEvents);
            if(calendarEvents.size() == 1){
                // Description contains the colour
                String colour = calendarEvents.get(0).getDescription();
                value = imgHTML(COASTAL_IMAGES_DIR+colour+COASTAL_IMAGE_SUFFIX, colourWidth, colourHeight, "images", "class='handCursor'", null);
            }else if(calendarEvents.size() > 1){
                // Might have two vessels going to the same port in the same day
                Set<String> colours = new HashSet<String>();
                for(CalendarEvent event : calendarEvents){
                    // Description contains the colour
                    colours.add(event.getDescription());
                }
                int numberOfPorts = colours.size();
                for(String colour : colours){
                    value += "<div>";
                    value += imgHTML(COASTAL_IMAGES_DIR+colour+COASTAL_IMAGE_SUFFIX, colourWidth, colourHeight/numberOfPorts, "images", "class='handCursor'", null);
                    value += "</div>";
                }
            }else{
                value = defaultMessage != null ? defaultMessage : date.getDate()+"";
            }
        }
        return value;
    }
};

PD:在所有版本的 chrome 和 IE 中,这段代码:

value += "<div>";
                value += imgHTML(COASTAL_IMAGES_DIR+colour+COASTAL_IMAGE_SUFFIX, colourWidth, colourHeight/numberOfPorts, "images", "class='handCursor'", null);
                value += "</div>";

打印正常,在 14 版之前的 firefox 中打印正常,但在 ff 中从 15 到 19 不打印“div”和“image”。我已经看到代码抛出了萤火虫,而 div 只是没有出现在那个 firefox 版本(15-19)中。

PD:它也不适用于 IE 10 的上次更新。

4

2 回答 2

0

最后我发现了问题。我不知道为什么,但是在 Firefox 的最新版本中,在 14 版本之后,gwt calendar(v 2.1) 自动重复打印日历两次,所以当它第二次打印时,它在没有图像的情况下做到了天体。

解决方法:手动创建代码以停止两次打印。

于 2013-05-08T23:32:09.947 回答
0

您能否在 SmartGWT 展示中看到以下示例中的图标。

截至 3 月 31 日,我可以在上述示例中看到 4 月 2 日、4 月 3 日、4 月 4 日和 4 月 5 日的图标。此示例中使用的 CalendarEvent 实例是在当前日期前 2、3、4 和 5 天创建的。

我正在使用 FireFox 19.0.2

于 2013-03-31T17:12:28.670 回答