Dojo 在dijit.calendar中自定义网格单元格的颜色并保持其持久性

Dojo 在dijit.calendar中自定义网格单元格的颜色并保持其持久性,dojo,Dojo,我在一个项目中使用dojo 1.6和dijit.calendar,除了为选定的网格单元着色之外,它工作得非常好。我有三个InnerHTML,它们被日历点击操作。没问题 calendar的行为是在单击某个gridcell(日历日)时将其高亮显示为蓝色,当单击另一个gridcell时,它会将其变为蓝色。 我想做的是在单击单元格时将其着色为自定义颜色,并使其保持不变 具体来说,日历适用于具有正式日期(蓝色)、开始日期(绿色)和结束日期(红色)的项目 我甚至不知道有一种方法可以在dijit.calend

我在一个项目中使用dojo 1.6和dijit.calendar,除了为选定的网格单元着色之外,它工作得非常好。我有三个InnerHTML,它们被日历点击操作。没问题

calendar的行为是在单击某个gridcell(日历日)时将其高亮显示为蓝色,当单击另一个gridcell时,它会将其变为蓝色。 我想做的是在单击单元格时将其着色为自定义颜色,并使其保持不变

具体来说,日历适用于具有正式日期(蓝色)、开始日期(绿色)和结束日期(红色)的项目

我甚至不知道有一种方法可以在dijit.calendar中为特定的gridcell着色。是否有人成功地做到了这一点,或者有一个指针将我发送到正确的方向

编辑以下内容:…

好了,伙计们,感谢下面的菲利普,我有一个很好的线索告诉你们该怎么做。Philippe的解决方案将完全按照预期给细胞上色(因此他得到了因果报应的答案)。结果表明,如果选定的网格单元为红色,并且我切换到月份以选择后续日期,则该单元将保持红色

我已经把大部分都弄明白了。比如说,我可以成功地将前两个日期着色,但如果我必须在下个月输入第三个日期并更改日历,单元格将保持着色。因此,必须有一种方法来改变我的颜色变化,使其与实际日期相对应

我知道onChange返回的唯一参数是日期本身,如下所示(使用Firebug中的debug.console)

我通过Firebug检查了代码,并注意到在同一个单元格中,代码看起来像这样

<td role="gridcell" class="dijitCalendarSelectedDate dijitCalendarCurrentMonth    dijitCalendarDateTemplate" dijitdatevalue="1326866400000" style="background-color: green;" tabindex="0"><span class="dijitCalendarDateLabel">18</span></td>
18
这个不同的值似乎是“dijitdatevalue”

我想我可以遵循一系列

单击后,将第一个日期的“dijitdatevalue”存储在隐藏字段中(以及第二个和第三个日期) 然后返回并将相应dijitdatevalue的背景色设置为蓝色、绿色或红色

现在的问题是如何将dijitdatevalue字符串返回到隐藏字段。我会在找到答案后再次更新这篇文章


Janie

如果你查看小部件代码,你会看到一个名为_onDayMouseDown的私有方法,它负责将单元格变成蓝色。。。 您可以通过dojo.connect将自定义代码添加到该函数中,如下所示:

dojo.connect(dijit.byId('calendar1'), "_onDayMouseDown", function(/*Event*/ evt){
   var node = evt.target.parentNode;
   dojo.style(node, "backgroundColor", "green");
});

否则,如果您使用dojo 1.7,您可以尝试使用

谢谢Philippe。我在上面编辑了我的帖子以包含更多信息。你死定了。看起来我必须将我的颜色绑定到一个不同的日期id(dijitdatevalue)而不是gridcell,因为当您更改月份时,gridcell保持相同的颜色。看来我得想出些更有活力的办法。
dojo.connect(dijit.byId('calendar1'), "_onDayMouseDown", function(/*Event*/ evt){
   var node = evt.target.parentNode;
   dojo.style(node, "backgroundColor", "green");
});