This question is locked. New answers and comments are not allowed.
Using dynamic method invocations to create a Grid, I get a StackOverflowException:
Working example (no dynamic invocations):
<% Telerik.Web.Mvc.UI.ViewComponentFactory tVcf = Html.Telerik(); tVcf.Grid<Applicatie>((IEnumerable<Applicatie>)ViewData["Applicaties"]).Name("test").Render();
%>Crashing example (identical, but using dynamic invocation; throws StackOverflowException):
<% Telerik.Web.Mvc.UI.ViewComponentFactory tVcf2 = Html.Telerik(); object oGrid = tVcf2.Grid<Applicatie>((IEnumerable<Applicatie>)ViewData["Applicaties"]); dynamic dGrid = oGrid; dynamic dGrid2 = dGrid.Name("test2"); dGrid2.Render(); %> The IEnumerable is a EntityFramework IQueryable to a database table containing a single record.
The above is just a simplified example. What I really want to accomplish is the runtime creation of a Grid<T>(IEnumerable<T>), where the IEnumerable in reality is an IQueryable, so I get excellent performance:
Type runtimeType = model.GetType(); // The runtime model type
Type ienumType = runtimeType.GetIEnumerableType(); // The runtime model's T, when IEnumerable<T>
// Html.Telerik():
telerik.UI.ViewComponentFactory tVcf = telerik.UI.HtmlHelperExtension.Telerik(hh);
// Html.Telerik().Grid<T>(IEnumerable<T> model): MethodInfo gridUngeneric = typeof(telerik.UI.ViewComponentFactory) .GetMethods().Where(x => x.Name == "Grid" && x.IsGenericMethod && x.GetParameters().Count() == 1 && x.GetParameters()[0].ParameterType.IsGenericType && x.GetParameters()[0].ParameterType.GetGenericTypeDefinition() == typeof(IEnumerable<>) ).Single(); MethodInfo gridGeneric = gridUngeneric.MakeGenericMethod(ienumType); object objgrid = gridGeneric.Invoke(tVcf, new object[] { model }); dynamic grid = objgrid;
// The rest.... System.Linq.Expressions.Expression<Func<telerik.UI.Fluent.GridResizingSettingsBuilder, telerik.UI.Fluent.GridResizingSettingsBuilder>> resizable = res => res.Columns(true); System.Linq.Expressions.Expression<Func<telerik.UI.Fluent.GridReorderingSettingsBuilder, telerik.UI.Fluent.GridReorderingSettingsBuilder>> reorderable = reo => reo.Columns(true);
grid .Name("listing-")//+System.Guid.NewGuid().ToString("X")) .Sortable() .Filterable() .Groupable() .Pageable() .Resizable(resizable) .Reorderable(reorderable) .ColumnContextMenu() .Render();I already filled this issue as a bug, but I want to know if anybody has a smart solution to get what I want without hitting the "bug".
Please note that the Model is of type object, but has a runtime type of IQueryable<T>.
I am very eager to see if anyone has a smart solution...
Kind regards,
Edwin.
Version info: VS2010 + Telerik Extensions for ASP.NET MVC Q1 2012, MVC3 binaries, version 2012.1.214.340