I've been using the Telerik Extensions for ASP.NET MVC for about 6 months now and I was excited to try the Kendo UI MVC Extensions. However, after trying it out for a few hours I do not think it is ready to be used for my new project, I'll stick to Telerik for a bit longer. Here are the bugs (I think they're bugs) I've found so far.
1) Localization. I was happy to see the text localize when I switch the page's CurrentCulture. Somehow, the grid is properly localized BEFORE the data loads but switches back to default (en-US) as soon as the binding finishes. Currencies are not localized either.
2) Aggregates. If the grid is empty, I get a Javascript Error: Uncaught ReferenceError: count is not defined and the default "No records to display" message is not displayed. This does not happen with Telerik MVC extensions.
3) Aggregates - date format. There's a problem with grouping and displaying dates (probably related to Json). Without grouping the dates are fine, but with grouping I get: /Date(1337704107810)/ . Once again this would not happen with Telerik.
4) Horizontal scrolling. I'm not sure if this is a bug or a bad setting, but when using horizontal scrolling with a grid that has groups and aggregate Sums and Counts in the main grid footer, the footer is static, it does not scroll with the rest of the grid. This works fine with Telerik. The detail footers scroll as expected though.
Let me know if you need further details to reproduce the issues.
Thanks,
Mathieu
22 Answers, 1 is accepted
Up to your comments:
- We need more info about this one. Generally speaking the Kendo grid initializes from the table which is rendered by the HtmlHelper extension. Then it uses current client-side culture for displaying dates. You can change the culture as shown in the globalization demo: http://demos.kendoui.com/web/globalization/index.html
- We need more info about this as well - paste here the declaration of your grid. On a side note the empty records template is not yet implemented in the beta.
- We need the configuration of your grid as well.
- We will investigate this one and see if it is already fixed or not.
Regards,
Atanas Korchev
the Telerik team

Controller Method
[GridAction]
public
ActionResult BindTransactionGrid(TransactionSearchViewModel search)
{
var model =
this
.GetQueryable(search);
return
View(
new
GridModel(model));
}
Grid markup (Razor)
@model TransactionSearchViewModel
<
div
id
=
"purchasehistory-transactiongrid-content"
>
@(Html.Telerik().Grid<
TransactionInfoViewModel
>()
.Name("purchasehistory-transactiongrid")
.ClientEvents(events => events.OnDataBinding("purchasehistory_onDataBinding").OnDataBound("purchasehistory_onDataBound"))
.Columns(columns =>
{
columns.Bound(o => o.ModifiedDate)
.Format("{0:yyyy/MM/dd HH:mm:ss}").Width(130)
.Aggregate(x => x.Count())
.ClientFooterTemplate("Total : <#= Count #>")
.ClientGroupFooterTemplate("Total : <#= Count #>");
columns.Bound(o => o.POSDisplay).Width(100);
columns.Bound(o => o.DivisionName).Width(100);
columns.Bound(o => o.ProductDisplay).Width(150);
columns.Bound(o => o.ProductQuantity).Width(40)
.Aggregate(x => x.Sum())
.ClientFooterTemplate("<#= Sum #>")
.ClientGroupFooterTemplate("<#= Sum #>");
columns.Bound(o => o.Total).Width(75).Format("{0:c}")
.Aggregate(x => x.Sum())
.ClientFooterTemplate("<#= $.telerik.formatString('{0:c}', Sum) #>")
.ClientGroupFooterTemplate("<#= $.telerik.formatString('{0:c}', Sum) #>");
columns.Bound(o => o.PersonDisplayName).Width(100);
columns.Bound(o => o.PersonJobDisplay).Width(140);
columns.Bound(o => o.PersonCode).Width(70);
columns.Bound(o => o.TransactionType).Width(65);
})
.Resizable(x => x.Columns(true))
.DataBinding(dataBinding => dataBinding.Ajax().Select("BindTransactionGrid", "PurchaseHistory", this.Model).Enabled(true))
.Resizable(x => x.Columns(true))
.Scrollable(scrolling => scrolling.Enabled(true).Height("auto"))
.Sortable(sorting => sorting.Enabled(true).SortMode(Telerik.Web.Mvc.UI.GridSortMode.SingleColumn)
.OrderBy(o => o.Add(m => m.ModifiedDate).Descending()))
.Pageable(paging => paging.Enabled(true).PageSize(20))
.Filterable(filtering => filtering.Enabled(true))
.Filterable(filtering => filtering.Filters(x => x.Add(o => o.ModifiedDate).IsGreaterThanOrEqualTo(DateTime.Today)))
.Groupable(grouping => grouping.Enabled(true))
.Footer(true))
</
div
>
Javascript code
$(document).ready(
function
() {
$(
'#purchasehistory-company'
).bind(
'change'
,
function
() {
var
grid = $(
'#purchasehistory-transactiongrid'
).data(
'tGrid'
);
grid.ajaxRequest();
if
(grid.currentPage != 1) {
grid.pageTo(1);
}
});
});
function
purchasehistory_onDataBinding(e)
{
e.data = {
CompanyId: $(
'#purchasehistory-company'
).val()
};
}
Here's my code for the equivalent Kendo UI grid:
Controller Method
public
ActionResult BindKendoGrid([DataSourceRequest]DataSourceRequest request,
string
companyId)
{
var model =
this
.GetQueryable(
new
TransactionSearchViewModel() { CompanyId = Guid.Parse(companyId) }).
ToDataSourceResult(request);
return
this
.Json(model);
}
Grid markup (Razor)
<
div
id
=
"kendoGrid"
>
@(Html.Kendo().Grid<
TransactionInfoViewModel
>()
.Name("purchasehistory-kendogrid")
.Columns(columns =>
{
columns.Bound(o => o.ModifiedDate).Format("{0:yyyy/MM/dd HH:mm:ss}").Width(130)
.ClientFooterTemplate("Total : #=count#")
.ClientGroupFooterTemplate("Total : #=count#");
columns.Bound(o => o.POSDisplay).Width(100);
columns.Bound(o => o.DivisionName).Width(100);
columns.Bound(o => o.ProductDisplay).Width(150);
columns.Bound(o => o.ProductQuantity).Width(40)
.ClientFooterTemplate("#=sum #")
.ClientGroupFooterTemplate("#=sum #");
columns.Bound(o => o.Total).Width(75).Format("{0:c}")
.ClientFooterTemplate("#=kendo.format('{0:c}', sum)#")
.ClientGroupFooterTemplate("#=kendo.format('{0:c}', sum)#");
columns.Bound(o => o.PersonDisplayName).Width(100);
columns.Bound(o => o.PersonJobDisplay).Width(140);
columns.Bound(o => o.PersonCode).Width(70);
columns.Bound(o => o.TransactionType).Width(65);
})
.DataSource(datasource => datasource
.Ajax()
.PageSize(20)
.Aggregates(aggregates =>
{
aggregates.Add(x => x.ModifiedDate).Count();
aggregates.Add(x => x.ProductQuantity).Sum();
aggregates.Add(x => x.Total).Sum();
})
.Read(read => read.Data("kendoDataBinding").Action("BindKendoGrid", "PurchaseHistory"))
.Sort(sort => sort.Add(x => x.ModifiedDate).Descending())
.Filter(filter => filter.Add(x => x.ModifiedDate).IsGreaterThanOrEqualTo(DateTime.Today))
)
.Resizable(x => x.Columns(true))
.Scrollable()
.Sortable(x => x.SortMode(Kendo.Mvc.UI.GridSortMode.SingleColumn))
.Pageable()
.Filterable()
.Groupable()
.Footer(true))
</
div
>
Javascript
$(document).ready(
function
() {
$(
'#purchasehistory-company'
).bind(
'change'
,
function
() {
var
grid = $(
'#purchasehistory-kendogrid'
).data(
'kendoGrid'
);
grid.dataSource.read();
});
});
function
kendoDataBinding() {
var
data = {
companyId: $(
'#purchasehistory-company'
).val()
};
return
data;
}
I hope this helps,
Mathieu

I also found another problem with my Kendo UI grid. Each time I attempt to apply a kendo filter, I get a server error. It seems like my Controller method does not recognize the DataSourceRequest object when a filter is applied. I get a NullReference exception, as if the BindKendoGrid method had never been defined.
Thanks,
Mathieu
The Kendo culture should be set only once with the current culture of the page. There is no need to send it to the server.
We couldn't reproduce 2 and 3. Is there a chance to send us a runnable project? We would really like to fix those problems.
We managed to reproduce 4 and fixed it.
The NullReferenceException when filtering is a known issue which has been fixed recently.
Atanas Korchev
the Telerik team

Edit.
Here is the code: http://dl.dropbox.com/u/45229958/Code/20120607-TelerikVsKendoUI.zip
I kept the code as simple as possible and was able to reproduce all the bugs. Even the filtering issue keeps showing up even if I do not pass supplementary data to the BindKendoGrid method. Somehow the filtering works when activated through the UI, but fails when set using the Markup (I had to comment the .Filter() line in my .DataSource statement for the grid to work).
Thanks for the sample project. We managed to observed and to address the filtering and grouping issues you have described. The fixes will be included in the next release. Meanwhile I have updated your telerik points.
Regards,
Rosen
the Telerik team

I have attached a modified version of the View in question, which demonstrates how to enable the globalization feature for the client side rendering.
Greetings,Rosen
the Telerik team

I'm sorry to report that even after adding the kendo.culture() javascript statement in my code I'm still getting the same behavior. The grid is properly localized when the page first loads, as seen when I put a breakpoint in my HomeController binding method. However, when the binding method returns and the grid refreshes, it switches back to english. I havent investigated much but I'm pretty sure that something needs to be done to the KendoUI .ToDataSourceResult() to pass the culture as a Json parameter and keep the localisation info intact!
Thanks,
Mathieu
I'm afraid that in the current version of KendoUI Grid for ASP.NET MVC, the localization is not fully supported. Currently, it does support globalization, which is demonstrated in the View provided in my previous message.
Regards,Rosen
the Telerik team

Is this a bug, or am I doing something wrong? I've only been working with Kendo UI for a few weeks now, so it may just be that there is a better way to clear a dataSource that uses aggregates.
Thanks!
John
The described issue is already fixed. You may download the Q2 2012 Beta and give it a spin.
Regards,Rosen
the Telerik team

HI,
我建立了一個 vb.net 的 Telerik ASP.NET MVC Application專案,然後選擇GRID and Menu這個範本,
執行後發生這個錯誤訊息造成Kendo UI 的GRID不能用 :
" BC31429: 'Grid' 模稜兩可,因為在 class 'Kendo.Mvc.UI.Fluent.WidgetFactory' 中有多種具有這個名稱的成員。 "
最後發現是2017.2.621.545這個版本的Kendo.Mvc.dll有問題,然後我換成2016.3.1118.545版本的dll就好了,
請問有其他人也有發生過這個問題嗎?
I've been creating a Telerik ASP.NET MVC Application for VB.net , then chosed a "GRID and Menu" Template, after running my project ,there is a error message : " BC31429: 'Grid' 模稜兩可,因為在 class 'Kendo.Mvc.UI.Fluent.WidgetFactory' 中有多種具有這個名稱的成員。 "
And I finally fount out that there is a problem in Kendo.Mvc.dll (2017.2.621.545 version) ,
when i replaced it with 2016.3.1118.545 version, everying is ok.
Is there any one have same problem like me ?
thany you.
We recently fixed an error with the VB Razor syntax. The internal build that includes the fix is available for download. Please download it and let us know how it works for you. It is 2017.2.707. I do not understand Chinese so if the error is not the one below, I would need more information in English so that I can help you further.:
'Grid' is ambiguous because multiple kinds of members with this name exist in class 'Kendo.Mvc.UI.Fluent.WidgetFactory'
Kind Regards,
Alex Hajigeorgieva
Progress Telerik

Yes that's my error message for VB Razor .
But I don't understand what is "internal build" and where to download the fix ,
Do you mean that i have to reinstall all part of Kedoui again ?
by the way And Now there is another question(maybe Bug) :
Also I've been creating a Telerik ASP.NET MVC Application for VB.net , then chosed a standard template ,
and i only creating one kendoUI razor button on MVC view ,
when i use IE11、IE10、IE9,it costed about 20~40 seconds to render this page.
and not this situation happened in Goolgle or edge even IE8.
Ansalso I I finally fount out that these two css file cause the problem:
<link href="https://kendo.cdn.telerik.com/2017.2.621/styles/kendo.common-material.min.css"
rel="stylesheet" type="text/css" />
<link href="https://kendo.cdn.telerik.com/2017.2.621/styles/kendo.material.min.css"
rel="stylesheet" type="text/css" />
still not work even if i downloaded these two css file to local side, it seems that there are some compatibility problem between
these css and IE.
Thanks!
Liu
As our licensed client, you can download the latest builds as they become available to you. This means that you do not have to wait for major releases to get the newest features and bugfixes (every 1-3 weeks or so).
To get the latest internal build:
- Go to your account:
https://www.telerik.com/account/my-downloads
- Click on the desired product and select the latest internal build:
Let me know if you experience any issues when you try it with the latest version.
Kind Regards,
Alex Hajigeorgieva
Progress Telerik

HI,
VB Razor bug had been fixed , thanks for your team.
But the performance problem of Css below still exist ,
<link href="https://kendo.cdn.telerik.com/2017.2.621/styles/kendo.common-material.min.css" rel="stylesheet" type="text/css" />
<link href="https://kendo.cdn.telerik.com/2017.2.621/styles/kendo.material.min.css" rel="stylesheet" type="text/css" />
they cause ie11、ie10、ie9 run very slowy when opening the page , again asking for your help
Thanks!
Liu
I have no knowledge of such performance issue which is caused by the Material Theme CSS files. However, IE is known for being less powerful with large amounts of HTML on the page compared to other modern browsers.
I suggest testing if another theme may perform better - for example, our new Default theme:
<
link
rel
=
"stylesheet"
href
=
"https://kendo.cdn.telerik.com/2017.2.621/styles/kendo.default-v2.min.css"
/>
Did you know you could change themes on our demos page from the top right -hand corner?
http://demos.telerik.com/kendo-ui/grid/index
Finally, if you are able to send us a project which displays the performance issue with some steps how to reproduce it, I would be able to investigate the cause.
Kind Regards,
Alex Hajigeorgieva
Progress Telerik

Hi,
i tried to use kendo gantt to make a treeList like your web demo :
https://demos.telerik.com/kendo-ui/gantt/index
But after i set parentid,there was nothing happend.
My code like this:
$("#gantt").kendoGantt({
dataSource: [
{
id: 1,
orderId: 0,
title: "Task1",
start: new Date("2014/6/17 9:00"),
end: new Date("2014/6/17 11:00"),
expanded: true,
parentId: null
},
{
id: 2,
orderId: 1,
title: "Task2",
start: new Date("2014/6/17 12:00"),
end: new Date("2014/6/17 13:00"),
parentId: 1
}
],
dependencies: [
{
id: 1,
predecessorId: 1,
successorId: 2,
type: 1
}
]
});
Which part was wrong?
Thanks,
Liu

HI,
I figure out that it need to add a 'summary' to my dataSource, so never mind that question.
Another question is that i need to know how to add a header row to ganttlst in order to group by my list,
just like yellow area in my attach.
That yellow row just a simple label title, so i can't make it into a treegrid.
What should i do?
Thanks,
Liu
Since you have questions regarding the Kendo UI Gantt, I have opened a new ticket on your behalf because this is the UI for ASP.NET MVC Grid forum.
If you prefer to ask a question in the forums, you can check the existing ones here:
https://www.telerik.com/forums/kendo-ui/gantt
Kind Regards,
Alex Hajigeorgieva
Progress Telerik

Hello ,
We are upgrading Kendo UI for ASP.NET MVC from 2017 to 2022.1.301.545. We use ASP.NET MVC 5. After the Kendo.mvc.dll is copied and stypes and script files updated, while running I get the exception error BC31429: 'Grid' is ambiguous because multiple kinds of members with this name exist in class 'Kendo.Mvc.UI.Fluent.WidgetFactory' How this can be solved?
Thanks, A