Templates define the way data is rendered inside of DataView. You can define multiple templates and switch between them dynamically.
view = new dhtmlXDataView({
container:"data_container",
type:{
template:"#Package# : #Version#<br/>#Maintainer#",
height:40
}
});
The { Package:"a", Version:"b", Maintainer:"c"} will be rendered as:
a : b <br/> c
A template can be defined as a part of the constructor (or not) as:
view.define("type",{
template:"#Package# : #Version#<br/>#Maintainer#"
});
If you need to provide only a text string and don't need any extra properties, you can use the "template" property directly on the top level (i.e. don't use the type parameter):
view = new dhtmlXDataView({
container:"data_container",
template:"#Package# : #Version#<br/>#Maintainer#"
});
view.define("type",{
template:"#Package# : #Version#<br/>#Maintainer#"
});
Related sample: Template from JS string
view.define("type",{
template:function(){ return obj.Package +"<br/>"+obj.Maintainer; }
});
Related sample: Template from JS function
<textarea id="template_container" rows="5" cols="60">
#Package# : #Version#
<br/>#Maintainer#</textarea>
...
view.define("type",{
template:"html->template_container",
})
Related sample: Template from HTML container
view.define("type",{
template:"http->../common/template.html",
})
Related sample: Template from HTML file
dhtmlx.Type.add(dhtmlXDataView,{
name:"dataA",
template:"#Package# : #Version#<br/>#Maintainer#",
height:40
});
data = new dhtmlXDataView({
container:"data_container",
type:"dataA"
});
Related sample: Named templates
"#property#" - replaced with a value of the related property
view.define("type",{
template:"#a# - #b#"
})
// a - b
"{common.property}" - replaced with a constant value from the template
view.define("type",{
template:"#a# - {common.mydata}",
mydata:25
})
// a - 25
"{common.method()}" - replaced with the result of a method call
view.define("type",{
template:"#a# - {common.mymethod()}",
mymethod:function(obj){
return obj.b.toUpperCase();
}
})
// a - B
"#property?valueA:valueB#" - ternary operator
view.define("type",{
template:"#a# - #flag?exist:not exist#"
})
// a - not exist
"{-obj" - replaced with #
Related sample: Template syntax
Sometimes it can be useful to change some parameter of a template. As a result, the view will be repainted with new configuration.
view.customize({
height:100
});
If you define some property in template as {common.some}, you will be able to change it any time by using the "customize" command.
view = new dhtmlXDataView({
container:"data_container",
type:{
template:"#Package# : #Version#<br/>#Maintainer#",
css:"some",
width:120,
height:40,
margin:5,
padding:0,
}
});
If you want apply a custom CSS style to the template, use the following technique:
view = new dhtmlXDataView({
container:"data_container",
type:{
template:"#Package# : #Version#<br/>#Maintainer#",
css:"custom",
}
});
.dhx_dataview_custom_item_selected{
font-weight:bold !important;
}
.dhx_dataview_custom_item{
font-size:12px !important;
}
Note, the css property has the default value - 'default'. So, you can skip step 1 and define the css classes with the following names:
In addition to a standard template, dataview can have additional task-specific templates defined:
view = new dhtmlXDataView({
container:"data_container",
edit:true,
type:{
template:"#Package# : #Version#<br/>#Maintainer#",
template_edit:"<input class='dhx_item_editor' bind='obj.Package'>",
template_loading:"Loading..."
}
});
Back to top