【发布时间】:2014-12-22 14:58:59
【问题描述】:
我在一个页面中呈现两个光滑的网格,并且我编写了一个自定义格式化程序,用于在页面加载时显示日期选择器,而不是在可编辑模式下(默认功能)。
我用一个网格列名来区分这两个网格。
function DateFormatter (row, cell, value, columnDef, dataContext) {
var template = null;
var rowString = row.toString();
var cellString = cell.toString();
if(dataContext.seasonName!= null){
var hiddenIdentitySeason = "#dpSeason"+rowString+cellString;
var dateIdentitySeason = "#seasonDateInput"+rowString+cellString;
$(hiddenIdentitySeason).datepicker({
buttonImage: "../images/calendar.gif",buttonImageOnly: true,changeMonth: true,changeYear: true,showOn: "both", onSelect: function(dateText, inst) {
$(dateIdentitySeason).val(dateText);
}
});
template = '<input type="text" id = "seasonDateInput'+rowString+cellString+'" style="width:75px;" value='+value+'></input><input type="hidden" id="dpSeason'+rowString+cellString+'" ></input>';
}else if(dataContext.foodName!= null){
var hiddenIdentity = "#dpFood"+rowString+cellString;
var dateIdentity = "#foodDateInput"+rowString+cellString;
$(hiddenIdentity).datepicker({
buttonImage: "../images/calendar.gif",buttonImageOnly: true,changeMonth: true,changeYear: true,showOn: "both", onSelect: function(dateText, inst) {
$(dateIdentity).val(dateText);
}
});
template = '<input type="text" id = "foodDateInput'+rowString+cellString+'" style="width:75px;" value='+value+'></input><input type="hidden" id="dpFood'+rowString+cellString+'" ></input>';
}
return template;
}
但是没有显示日期选择器图标,这意味着没有调用 datepicker()。
如果我只为一个网格编写此格式化程序,它会按预期工作。
适用于一个网格的代码:
function DateFormatter (row, cell, value, columnDef, dataContext) {
var rowString = row.toString();
var cellString = cell.toString();
var hiddenIdentitySeason = "#dpSeason"+rowString+cellString;
var dateIdentitySeason = "#seasonDateInput"+rowString+cellString;
$(hiddenIdentitySeason).datepicker({
buttonImage: "../images/calendar.gif",buttonImageOnly: true,changeMonth: true,changeYear: true,showOn: "both", onSelect: function(dateText, inst) {
$(dateIdentitySeason).val(dateText);
}
});
return '<input type="text" id = "seasonDateInput'+rowString+cellString+'" style="width:75px;" value='+value+'></input><input type="hidden" id="dpSeason'+rowString+cellString+'" ></input>';
}
请多多指教。
【问题讨论】:
-
我感觉问题是由于在您应用/绑定
datepicker时,template尚未添加到 DOM。当您仅为一个网格编写此格式化程序时,也许您可以详细说明您在做什么。 -
我以同样的方式应用自定义格式化程序,没有 if else 条件。
-
另一个网格是否仍然包含列定义以及其中的格式化程序用法?网格的加载顺序是什么?
-
是的。如果我使用上面给出的两个网格的第二段代码,首先在页面加载时可以正常工作。但是如果我们对两个网格都使用相同的格式化程序模板,则会发生 id 冲突。首先,创建季节网格,然后创建食物网格