When a grid does not have a rowTemplate specified the kendoGrid configuration the component will build an implicit default template.
I have a situation where the grid is displaying columns A,B,C,D from a data source having A,B,C,D,X,Y,Z and I need to twiddling an entire row when some condition exists amongst X, Y and Z.
The real problem is more involved in this manner and involves a Database view V on the server and XML data responses.
I have a situation where the grid is displaying columns A,B,C,D from a data source having A,B,C,D,X,Y,Z and I need to twiddling an entire row when some condition exists amongst X, Y and Z.
The real problem is more involved in this manner and involves a Database view V on the server and XML data responses.
- dataSource1 fetches column names from metadata of V
- dataSource2 fetches data from V
- grid displays some columns of dataSource2 (A,B,C,D) and needs to set css of row based on X,Y,Z
dataSource1.
- each column name is used to setup the filelds: property of dataSource2 schema:model
fields[this.name] = this.name+'/text()';
dataSource2.
- every column in V will be available
grid
- the actual columns displayed can be controlled by the user by typing in a list of regex's such as
^store ^city ^state ^zip mgr
A routine guess() will take the input and find matching column names (case-insensitve). This makes using a static template difficult.
The grid setup is thus:
The only piece remaining is how do I set data element 'row-is-special' when I am not using a custom template.
The solution I chose was to tweak grid in the following manner:
The kendo.grid.js _tmpl: was modified as follows:
In the "if (!rowTemplate)" section just prior to
this was added
Hope this is helpful and the concept gets rolled into a future version
Regards,
Richard
$(
"#stores"
).kendoGrid({
dataSource: dataSource,
autoBind:
false
,
selectable:
"multiple"
,
groupable:
true
,
resizable:
true
,
reorderable:
true
,
columns: guess(
'^store
^city
^state
^zip'
),
dataBound:
function
(e) {
$(e.sender.wrapper).find(
'[data-row-is-special=true]'
).addClass(
'my-row-is-special'
);
}
});
The only piece remaining is how do I set data element 'row-is-special' when I am not using a custom template.
The solution I chose was to tweak grid in the following manner:
- Add a new property named "onCloseImplicitRowTag" to the templateSettings: property of the grid configuration
- and use it my grid configuration:
-
templateSettings: { onCloseImplicitRowTag:
'# if (X && X != Z && Y && Y > 0) {# data-row-is-special="true" #}#'
}
If everything is functioning properly the grids implicit <TR will get a data-row-is-special=true and databound will convert that info into a class setting that has the desired display attributes (bold, italic, white on red)
The kendo.grid.js _tmpl: was modified as follows:
In the "if (!rowTemplate)" section just prior to
rowTemplate +=
">"
;<br>
var
option = settings.onCloseImplicitRowTag;
if
(option) {
type =
typeof
option;
if
(type === STRING) {
rowTemplate +=
' '
+ option;
}
}
Hope this is helpful and the concept gets rolled into a future version
Regards,
Richard