日历控件中,我们自己需要写的就是每一个日期单元格中的部分,在日历控件部分代码的最后面,有三个for循环,用来控制上个月当前月和下个月日期,其中第二个循环是当前月(日历标题部分选择的月份)控制部分。
代码如下:
for(; i < startingPos; ) {
var tempId = "fruit"+i;
d.setDate(d.getDate()+1);
var fvalue = d.dateFormat(format);
textEls[i].innerHTML = '<div align="center"><font size ="2" color = "#8B8378" >'+(++prevStart)+'</font>'+'<br></div>';
cells[i].className = 'x-date-prevday';
setCellClass(this, cells[i]);
i = i + 1;
}
for(; i < days; ){
var divId = "div"+i;
var intDay = i - startingPos + 1;
d.setDate(d.getDate()+1);
var fvalue = d.dateFormat(format);
var comboId = "combo"+fvalue+"-"+i; // 设置这个ID是为了让每个单元格中保存当前日期唯一的ID,如果直接使用fvalue的话,获取的会是这个月最后一天对应的值
var config = new Ext.Button({
text: '设置',
id: comboId,
border: false,
handler : function(edt,e) {
var dateStrConfig = edt.id.substring(5,15);
/** 按钮处理事件 */
}
});
/** 单元格中显示内容 */
textEls[i].innerHTML = '<div align="center"><font size ="2">'+(intDay)+'</font>'+'<br><div id="'+divId+'" align="center"></div></div>';
config.render(divId); // 将我们自己定义的按钮放到单元格中(渲染)
cells[i].className = 'x-date-active';
setCellClass(this, cells[i]);
i = i + 1;
}
var extraDays = 0;
for(; i < 42; ) {
var tempId = "fruit"+i;
d.setDate(d.getDate()+1);
var fvalue = d.dateFormat(format);
textEls[i].innerHTML = '<div align="center"><font size ="2" color = "#8B8378">'+(++extraDays)+'</font>'+'<br></div>';
cells[i].className = 'x-date-nextday';
setCellClass(this, cells[i]);
i = i + 1;
}