Hello,
I am trying to implement a grid that uses a ClientRowTemplate and also has GroupBy functionality. The grid renders fine and all other behaviors act appropriately except the GroupBy, when a column is selected to GroupBy the column headers act strangely and an additional column is inserted and the widths are changed as well. If I remove the ClientRowTemplate everything works great. I am new to Kendo so please let me know if my implementation is wrong or could be better code is below:
I am trying to implement a grid that uses a ClientRowTemplate and also has GroupBy functionality. The grid renders fine and all other behaviors act appropriately except the GroupBy, when a column is selected to GroupBy the column headers act strangely and an additional column is inserted and the widths are changed as well. If I remove the ClientRowTemplate everything works great. I am new to Kendo so please let me know if my implementation is wrong or could be better code is below:
@(Html.Kendo().Grid(Model)
.Name("Grid")
.HtmlAttributes(new { style = "height:450px;font-size:.85em;" })
.Columns(columns =>
{
columns.Template(e => { }).ClientTemplate(" ").Width(30).HtmlAttributes(new { style="vertical-align: middle; text-align: center" });
columns.Bound(p => p.Id).Width(60);
columns.Bound(p => p.Title).Width(250);
columns.Bound(p => p.AssignedUser).Width(120);
columns.Bound(p => p.Status);
columns.Bound(p => p.Priority);
columns.Bound(p => p.Category);
columns.Bound(p => p.Tier);
columns.Bound(p => p.LastModifiedAsString).Title("Last Modified").Width(120);
})
.ClientRowTemplate(
"<
tr
>" +
"<
td
>" +
"<
img
style
=
'margin-top:5px;'
src
=
'" + Url.Content("~/Images/") +"#:data.Icon#'
alt
=
'#:data.Icon#'
/>" +
"</
td
>" +
"<
td
width
=
'60'
>#: Id #</
td
>" +
"<
td
width
=
'250'
>#: Title #</
td
>" +
"<
td
width
=
'120'
>#: AssignedUser #</
td
>" +
"<
td
>#: Status #</
td
>" +
"<
td
>#: Priority #</
td
>" +
"<
td
>#: Category #</
td
>" +
"<
td
>#: Tier #</
td
>" +
"<
td
>#: LastModifiedAsString #</
td
>" +
"</
tr
>"
)
.Pageable()
.Sortable()
.Scrollable()
.Groupable()
.Filterable(filterable => filterable
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.StartsWith("Starts with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
))
)
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Single))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Get", "Grid"))
)
.Events(e => e.Change("onChanged"))
)
<
script
type
=
"text/javascript"
>
function onChanged(arg) {
var selected = this.select();
var wiId = this.dataItem(selected).Id;
window.location = '../WorkItem/Edit?Id=' + wiId;
}
var myGrid;
$(function () {
myGrid = $('#Grid').data('kendoGrid');
});
setInterval(DoWork, parseInt(@ViewBag.RefreshInterval));
function DoWork() {
myGrid.dataSource.read();
}
</
script
>