New to Telerik UI for ASP.NET Core? Start a free 30-day trial
Template Columns
Updated on Oct 27, 2026
Template columns let you customize how the Grid displays data in each cell.
The following example shows how to define a custom column layout with images and field values from the data source. The templates use JavaScript functions.
Razor
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.Customer>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.ContactName).Width(140).ClientTemplate("#=template(data)#");
columns.Bound(c => c.ContactTitle).Width(190);
columns.Bound(c => c.CompanyName);
columns.Bound(c => c.Country).Width(110);
})
.HtmlAttributes(new { style = "height: 380px;" })
.Scrollable()
.Groupable()
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Customers_Read", "Grid"))
)
)
<script>
function template(data) {
return `<div class='customer-photo'
style='background-image: url(https://demos.telerik.com/kendo-ui/content/web/Customers/${data.CustomerID}.jpg);'></div>
<div class='customer-name'>${data.ContactName}</div>`;
}
</script>Conditional Cell Formatting with TagHelpers
To conditionally format a Grid column with TagHelpers, use the column's template attribute and call a JavaScript function with the current data item. The following example renders the Title value in bold when it equals Special.
Razor
<kendo-grid name="grid">
<columns>
<column field="Title" template="#=titleTemplate(data)#" />
</columns>
</kendo-grid>
<script>
function titleTemplate(data) {
var title = kendo.htmlEncode(data.Title);
return data.Title === "Special"
? "<strong>" + title + "</strong>"
: title;
}
</script>
Use the following CSS to style the image and text in the template column.
CSS
<style type="text/css">
.customer-photo {
display: inline-block;
width: 32px;
height: 32px;
border-radius: 50%;
background-size: 32px 35px;
background-position: center center;
vertical-align: middle;
line-height: 32px;
box-shadow: inset 0 0 1px #999, inset 0 0 10px rgba(0,0,0,.2);
margin-left: 5px;
}
.customer-name {
display: inline-block;
vertical-align: middle;
line-height: 32px;
padding-left: 3px;
}
</style>