kendo-ui - Kendo treelist - 尝试设置列模板

标签 kendo-ui

我正在使用 Kendo 树列表小部件,很失望地看到没有 rowTemplate Kendo 网格上的选项。

我看到一个 columnTemplate选项(即 http://docs.telerik.com/kendo-ui/api/javascript/ui/treelist#configuration-columns.template ),但这将影响整个列。

但是,我需要深入了解每个单元格值并根据比率设置一个 css 颜色属性(即如果 value/benchmark < .2,则分配 <span style='color:red;'>,但我的颜色值是动态的。

有一个 dataBound:dataBinding: treelist 上的事件,但我仍在尝试找出如何拦截每个单元格值并在完成计算后设置颜色。

var treeOptions = {
dataSource: ds,
columns: colDefs,
selectable: true,
scrollable: true,
resizable: true,
reorderable: true,
height: 320,
change: function (e) {
    // push selected dataItem
    var selectedRow = this.select();
    var row = this.dataItem(selectedRow);                    
},
dataBound: function (e) {
    console.log("dataBinding");
    var ds = e.sender.dataSource.data();
    var rows = e.sender.table.find("tr");
}
};

这就是我构建“colDefs”对象(列定义)的地方:

function parseHeatMapColumns(data, dimId) {
// Creates the Column Headers of the heatmap treelist.
// typeId=0 is 1st Dimension; typeId=1 is 2nd Dimension 

var column = [];
column.push({
"field": "field0",
"title": "Dimension",
headerAttributes: { style: "font-weight:" + 'bold' + ";" },
attributes : { style: "font-weight: bold;" }
});

var colIdx = 1;     // start at column 1 to build col headers for the 2nd dimension grouping
_.each(data, function (item) {
if (item.typeId == dimId) {
    // Dimension values are duplicated, so push unique values (i.e. trade types may have dupes, whereas a BkgLocation may not). 
    var found = _.find(column, { field0: item.field0 }); 
    if (found == undefined) {
	column.push({          
	    field: "field2",
	    title: item.field0,
	    headerAttributes: {
		style: "font-weight:" + 'bold'
	    }
	    ,template: "<span style='color:red;'>#: field2 #</span>"      
	});  
	colIdx++;
    }
}
});

return column;
}

**** 更新 **** 为了在 template 中嵌入一些逻辑:

function configureHeatMapColumnDefs(jsonData, cols, model) {
    var colDef = '';
    var dimId = 0;
    var colorProp;

    var columns = kendoGridService.parseHeatMapColumns(jsonData, dimId);

    // iterate columns and set color property; NB: columns[0] is the left-most "Dimension" column, so we start from i=1.
    for (var i = 1; i <= columns.length-1; i++) {
	columns[i]['template'] = function (data) {
	    var color = 'black';
	    if (data.field2 < 1000) {
		color = 'red';
	    }
	    else if (data.field2 < 5000) {
		color = 'green';
	    }                    
	    return "<span style='color:" + color + ";'>" + data.field2 + "</span>";
	};

    }
    return columns;
}

不胜感激。 谢谢, 鲍勃

最佳答案

在数据绑定(bind)事件中,您可以遍历行。对于每一行,您可以使用 dataitem() 方法 (http://docs.telerik.com/kendo-ui/api/javascript/ui/treelist#methods-dataItem) 获取与其关联的 dataItem

一旦你有了数据项,计算你的比例,如果行符合颜色标准,更改单元格 DOM 元素:

dataBound: function (e) {
    var that = e.sender;
    var rows = e.sender.table.find("tr");
    rows.each(function(idx, row){
    var dataItem = that.dataItem(row);
    var ageCell = $(row).find("td").eq(2);
    if (dataItem.Age > 30) {
        //mark in red 
         var ageText = ageCell.text();
         ageCell.html('<span style="color:red;">' + ageText + '</span>');                            
    }
}

DEMO

更新:您也可以使用模板执行此操作:

                $("#treelist").kendoTreeList({
                    dataSource: dataSource,
                    height: 540,
                    selectable: true,
                    columns: [
                        { field: "Position"},
                        { field: "Name" },
                        { field: "Age",
                         template: "# if ( data.Age > 30  ) { #<span style='color:red;'> #= data.Age # </span>  #}else{# #= data.Age # #}#"
                        }
                    ],

                });

DEMO

关于kendo-ui - Kendo treelist - 尝试设置列模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32743854/

相关文章:

mvvm - 使用 MVVM 编辑 Kendo UI Grid 弹出窗口

javascript - 当 Kendo 网格为空时在其内显示一条消息

javascript - 使用浏览器后退按钮时,我的应用程序中的标题不会更改

javascript - 如何在关闭事件中获取剑道窗口的名称

kendo-ui - 如何删除剑道图表 y 轴中的小数位

javascript - 在表格中显示 Angular 中单个对象的数据时出现问题

javascript - 如何在鼠标指针处打开 Kendo 窗口

kendo-ui - Kendo grid 由于我的数据很大,如何在鼠标悬停在每一列上时显示行内容?

datasource - 剑道UI : programmatically setting a datasource model

kendo-ui - 在Kendo Grid中设置默认分组