Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kendo ui 剑道UI网格-列模板中的调用函数_Kendo Ui_Kendo Grid_Kendo Template - Fatal编程技术网

Kendo ui 剑道UI网格-列模板中的调用函数

Kendo ui 剑道UI网格-列模板中的调用函数,kendo-ui,kendo-grid,kendo-template,Kendo Ui,Kendo Grid,Kendo Template,我有一个剑道网格,在那里我将它动态绑定到一个JSON对象 在generateColumns函数中,我想调用getKendoColor函数。但是,我需要传递列单元格值。在下面的代码中,我强制使用“红色”来显示它应该如何工作 如何将列值传递给此getKendoColor函数 剑道UI片段 var isDateField=[]; var isTaskField=[]; $.ajax({ url:“http://www.mocky.io/v2/59c4dd1e4000005400b25ba7", 数

我有一个剑道网格,在那里我将它动态绑定到一个JSON对象

generateColumns函数中,我想调用getKendoColor函数。但是,我需要传递列单元格值。在下面的代码中,我强制使用“红色”来显示它应该如何工作

如何将列值传递给此getKendoColor函数


剑道UI片段
var isDateField=[];
var isTaskField=[];
$.ajax({
url:“http://www.mocky.io/v2/59c4dd1e4000005400b25ba7",
数据类型:“jsonp”,
成功:功能(结果){
generateGrid(结果);
}
});
函数生成器ID(响应){
var模型=生成模型(响应);
变量列=生成列(响应);
var grid=$(“#grid”).kendoGrid({
数据源:{
运输:{
阅读:功能(选项){
选项。成功(响应。表);
}
},
页面大小:5,
模式:{
型号:型号
}
},
列:列,
pageable:对,
可编辑:false
});
}
函数generateColumns(响应){
var columnNames=响应[“columns”];
返回columnNames.map(函数(名称){
如果(isTaskField[名称]){
返回{field:name,模板:'#=getKendoColor(“RED”)#',格式:(isDateField[name]?“{0:D}”:“)};
}
其他的
返回{field:name,格式:(isDateField[name]?“{0:D}”:“)};
})
}
函数generateModel(响应){
var sampleDataItem=响应[“表”][0];
var模型={};
变量字段={};
for(sampleDataItem中的var属性){
var itemValue=sampleDataItem[property];
if(property.indexOf(“ID”)!=-1){
模型[“id”]=属性;
}
var propType=sampleDataItem[属性]的类型;
如果(propType==“数字”){
字段[属性]={
键入:“数字”,
验证:{
必填项:true
}
};
if(model.id==属性){
字段[属性]。可编辑=false;
字段[属性].validation.required=false;
}
}else if(propType==“布尔”){
字段[属性]={
类型:“布尔”
};
}else if(propType==“字符串”){
var parsedDate=kendo.parseDate(sampleDataItem[property]);
if(parsedDate){
字段[属性]={
键入:“日期”,
验证:{
必填项:true
}
};
isDateField[属性]=真;
}否则{
字段[属性]={
验证:{
必填项:true
}
};
如果((属性!=“实体”)&&(属性!=“期间”)&&&(属性!=“级别”))
{
isTaskField[属性]=真;
}
}
}否则{
字段[属性]={
验证:{
必填项:true
}
};
}
}
model.fields=字段;
收益模型;
}
函数getKendoColor(总体状态){
OverallStatus=OverallStatus.toUpperCase();
//警报(总体状态);
var htmlRed=kendo.format(“”);
var htmlGreen=kendo.format(“”);
var htmlOrange=kendo.format(“”);
var htmlYellow=kendo.format(“”);
开关(总体状态){
案例“红色”:
返回htmlRed;
案例“绿色”:
返回htmlGreen;
案例“橙色”:
返回HTMLANGE;
案例“黄色”:
返回htmlYellow;
“已创建”案例:
返回htmlRed;
案例“批准”:
返回htmlGreen;
}
}      

您可以将模板本身设置为一个函数,在您的情况下,稍微更改getKendoColor即可:

function getColumnTemplate(dataItem) {
    var OverallStatus = dataItem.OverallStatus.toUpperCase();

    //All the rest of your getKendoColor function
    return someHTML;
}
然后就用这个函数作为模板

return columnNames.map(function (name) {
                    if (isTaskField[name]) {

                        return { field: name, template: getColumnTemplate, format: (isDateField[name] ? "{0:D}" : "") };
                    }
                    else
                        return { field: name, format: (isDateField[name] ? "{0:D}" : "") };
                })

抱歉,我不想将“RED”传递到函数中,而是要传递单元格值。这是我唯一的问题。模板本身可以是一个返回html的函数,请参阅修订的答案。我不能使用“dataItem.OverallStatus.toUpperCase”,因为此列在运行时可能不存在。OverallStatus属性在运行时是否可用超出了原始问题的范围。关键是使用模板函数可以在呈现html之前访问dataItem。