Я работаю с виджетами из древовидного списка Kendo и разочарован, увидев, что нет опции rowTemplate
, как есть в сетке Kendo.Kendo treelist - попытка установить шаблон столбца
Я вижу вариант 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) {
\t column.push({
\t field: "field2",
\t title: item.field0,
\t headerAttributes: {
\t \t style: "font-weight:" + 'bold'
\t }
\t ,template: "<span style='color:red;'>#: field2 #</span>"
\t });
\t colIdx++;
}
}
});
return column;
}
**** **** UPDATE Для того, чтобы вставлять некоторые логика в 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++) {
\t columns[i]['template'] = function (data) {
\t var color = 'black';
\t if (data.field2 < 1000) {
\t \t color = 'red';
\t }
\t else if (data.field2 < 5000) {
\t \t color = 'green';
\t }
\t return "<span style='color:" + color + ";'>" + data.field2 + "</span>";
\t };
}
return columns;
}
Совет приветствуется. Спасибо, Bob
Этот пример для сетки, но, возможно, будет работать на TreeList? http://docs.telerik.com/kendo-ui/web/grid/how-to/cell-color-based-on-foreignkey-values –
Не могли бы вы предоставить данные, которые вы хотите отобразить в treelist? –
@RickS - Я добавил функцию parseHeatMapColumns() 'в свой пост. Это показывает, как я в настоящее время пытаюсь использовать параметр «шаблон» столбца; однако из примера, который вы опубликовали, я вижу, что вместо этого я могу использовать 'функцию' внутри шаблона. Таким образом, я могу рассчитать цвет динамически. позвольте мне попробовать это ... –