在 kendo 调度程序控件 header 中呈现数据 - dateHeaderTemplate
Rendering data in kendo scheduler control header - dateHeaderTemplate
我正在使用 Kendo 中的调度程序控件。我正在尝试在每天的 header 中呈现每日容量(现在硬编码 30%),如下面的屏幕所示。如何替换由数据源中的数据硬编码?
这是我用过的代码。我在下面的代码中硬编码了 30%。
<!DOCTYPE html>
<html>
<head>
<style>html { font-size: 12px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.common-material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.default.mobile.min.css" />
<script src="Scripts/jquery.min.js"></script>
<script src="Scripts/kendo.web.min.js"></script>
<script>
$(function () {
$('#scheduler').kendoScheduler({
date: new Date("2013/09/02"),
dateHeaderTemplate: kendo.template("<u>#=kendo.toString(date, 'dd/M')#</u> - (30%)"),
});
});
</script>
</head>
<body>
<div id="scheduler"></div>
/body>
现在,我将从 API 获取 'percentage',并希望设置为数据源,我希望从数据源将其呈现为 header
当前数据源设置代码来自JavaScript
var datasource = new kendo.data.SchedulerDataSource({
data:Model.recordCollection // setting data
});
scheduler.setDataSource(datasource);
但此数据源与日历事件相关,不包含每日容量。那么如何设置来自不同数据源的每日容量数据?
根据回答,我正在编辑问题
var actualDC = ["30", "20","10", "50","70", "60", "40"]; // 硬编码每日容量
但它只满足 7 天,我可能有全年数据。和数组可能不正确。
来自服务器的示例数据:
var mydatafromApi = ({
date:01/01/2013,
percentage=30%
},
{
date:02/01/2013,
percentage=40%
});
更新问题 2
现在 API 数据源具有如下颜色属性
var mydatafromApi = ({
date:01/01/2013,
percentage=30%,
color = red
},
{
date:02/01/2013,
percentage=40%
color = blue
});
我想让这些颜色成为调度程序单元格的背景。
我试过如下
第一个定义的颜色
var actualColor = ["red", "blue","green", "yellow","blue", "red", "yellow"]; // hard coded daily color
function scheduler_dataBound(e) {
$.each($(".k-scheduler-header .k-scheduler-table th span.k-nav-day"),function(index, val) {
var text = $(this).text();
var newtext = text.replace("{dc}", actualDC[index]);
$(this).text(newtext);
$(this).backgroundcolor(actualColor[index]);
});
}
已更新问题 3
我在调试 "dateofHeader"
时低于值
header脚本如下
dateHeaderTemplate = kendo.template("<span class='k-nav-day' data-dt='kendo.toString(date, 'dd/MM/yyyy')'><u>#=kendo.toString(date, 'dd/M')#</u> - ({dc}%)</span>")
然后我尝试了 " ,它给了我这样的 - ""kendo.toString(date, 'dd/MM/yyyy')""
您可以使用调度程序 databound
事件来修改其日期 header 模板,并且您必须在该模板中使用字符串临时字符,该字符将被当前日期容量值替换。
<span class='k-nav-day'><u>#=kendo.toString(date, 'dd/M')#</u> - ({dc}%)</span>
您可以使用此选择器获取日期 header 元素
$(".k-scheduler-header .k-scheduler-table th span.k-nav-day")
然后更改调度程序 databound
事件中的文本。我为此做了一个dojo,希望这能帮助你理解。
------------更新问题 1 的答案-------------
如果您有 object 的 collection 而不是字符串数组,则没有关系。您可以替换它,但需要对代码进行另一次调整。
您应该将日期值添加为日期 header 模板中的数据属性
<script id="tmpDateHeader" type="text/x-kendo-template">
<span class="k-nav-day" data-dt="#=kendo.toString(date, 'dd/MM/yyyy')#">
<u>#=kendo.toString(date, "dd/M")#</u> - ({dc}%)
</span>
</script>
并像这样使用它
$("#scheduler").kendoScheduler({
dateHeaderTemplate: kendo.template($("#tmpDateHeader").html())
}
您可以看到我们这里有数据属性 data-dt
,它应该与每日容量数据源的日期 属性 中的值具有相同的格式。然后您必须获取该属性值才能在数据源中找到匹配的 object。
// code in scheduler databound inside each scope
var dateOfHeader = $(this).data("dt"); // get date value from template
var matchData = // find in data source, where object.date == dateOfHeader
var newtext = text.replace("{dc}", matchData.percentage);
希望您能完成剩下的工作。
------------更新问题 2 的答案-------------
要更改其容器背景,请使用此
$(this).parent().css("background-color", actualColor[index]);
我正在使用 Kendo 中的调度程序控件。我正在尝试在每天的 header 中呈现每日容量(现在硬编码 30%),如下面的屏幕所示。如何替换由数据源中的数据硬编码?
这是我用过的代码。我在下面的代码中硬编码了 30%。
<!DOCTYPE html>
<html>
<head>
<style>html { font-size: 12px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.common-material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.default.mobile.min.css" />
<script src="Scripts/jquery.min.js"></script>
<script src="Scripts/kendo.web.min.js"></script>
<script>
$(function () {
$('#scheduler').kendoScheduler({
date: new Date("2013/09/02"),
dateHeaderTemplate: kendo.template("<u>#=kendo.toString(date, 'dd/M')#</u> - (30%)"),
});
});
</script>
</head>
<body>
<div id="scheduler"></div>
/body>
现在,我将从 API 获取 'percentage',并希望设置为数据源,我希望从数据源将其呈现为 header
当前数据源设置代码来自JavaScript
var datasource = new kendo.data.SchedulerDataSource({
data:Model.recordCollection // setting data
});
scheduler.setDataSource(datasource);
但此数据源与日历事件相关,不包含每日容量。那么如何设置来自不同数据源的每日容量数据?
根据回答,我正在编辑问题
var actualDC = ["30", "20","10", "50","70", "60", "40"]; // 硬编码每日容量 但它只满足 7 天,我可能有全年数据。和数组可能不正确。
来自服务器的示例数据:
var mydatafromApi = ({
date:01/01/2013,
percentage=30%
},
{
date:02/01/2013,
percentage=40%
});
更新问题 2
现在 API 数据源具有如下颜色属性
var mydatafromApi = ({
date:01/01/2013,
percentage=30%,
color = red
},
{
date:02/01/2013,
percentage=40%
color = blue
});
我想让这些颜色成为调度程序单元格的背景。
我试过如下
第一个定义的颜色
var actualColor = ["red", "blue","green", "yellow","blue", "red", "yellow"]; // hard coded daily color
function scheduler_dataBound(e) {
$.each($(".k-scheduler-header .k-scheduler-table th span.k-nav-day"),function(index, val) {
var text = $(this).text();
var newtext = text.replace("{dc}", actualDC[index]);
$(this).text(newtext);
$(this).backgroundcolor(actualColor[index]);
});
}
已更新问题 3 我在调试 "dateofHeader"
时低于值header脚本如下
dateHeaderTemplate = kendo.template("<span class='k-nav-day' data-dt='kendo.toString(date, 'dd/MM/yyyy')'><u>#=kendo.toString(date, 'dd/M')#</u> - ({dc}%)</span>")
然后我尝试了 " ,它给了我这样的 - ""kendo.toString(date, 'dd/MM/yyyy')""
您可以使用调度程序 databound
事件来修改其日期 header 模板,并且您必须在该模板中使用字符串临时字符,该字符将被当前日期容量值替换。
<span class='k-nav-day'><u>#=kendo.toString(date, 'dd/M')#</u> - ({dc}%)</span>
您可以使用此选择器获取日期 header 元素
$(".k-scheduler-header .k-scheduler-table th span.k-nav-day")
然后更改调度程序 databound
事件中的文本。我为此做了一个dojo,希望这能帮助你理解。
------------更新问题 1 的答案-------------
如果您有 object 的 collection 而不是字符串数组,则没有关系。您可以替换它,但需要对代码进行另一次调整。
您应该将日期值添加为日期 header 模板中的数据属性
<script id="tmpDateHeader" type="text/x-kendo-template">
<span class="k-nav-day" data-dt="#=kendo.toString(date, 'dd/MM/yyyy')#">
<u>#=kendo.toString(date, "dd/M")#</u> - ({dc}%)
</span>
</script>
并像这样使用它
$("#scheduler").kendoScheduler({
dateHeaderTemplate: kendo.template($("#tmpDateHeader").html())
}
您可以看到我们这里有数据属性 data-dt
,它应该与每日容量数据源的日期 属性 中的值具有相同的格式。然后您必须获取该属性值才能在数据源中找到匹配的 object。
// code in scheduler databound inside each scope
var dateOfHeader = $(this).data("dt"); // get date value from template
var matchData = // find in data source, where object.date == dateOfHeader
var newtext = text.replace("{dc}", matchData.percentage);
希望您能完成剩下的工作。
------------更新问题 2 的答案-------------
要更改其容器背景,请使用此
$(this).parent().css("background-color", actualColor[index]);