This is a migrated thread and some comments may be shown as answers.

[Solved] Sortable (and Groupable) problem with navigation properties

3 Answers 194 Views
Grid
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
sebrojas
Top achievements
Rank 1
sebrojas asked on 19 Jul 2010, 06:16 PM
Hello, please help me!

[Using Q2 beta]

When the column that correspont to a navigation property in the model (to a complex type, like in the example of Display & Edit Templates the column Employee), I can't sort o group by this column. in both cases I got the error below. I supose that I have to specify what is the order property of the Employee for example, but a don't know how tu do it

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: DbSortClause expressions must have a type that is order comparable.
Parameter name: key

Source Error:

Line 41:     <h2>Administración de Grupos</h2>
Line 42: 
Line 43: <% Html.Telerik().Grid(Model)Line 44:             .Name("Grid")
Line 45:             .DataKeys(keys =>

Source File: c:\Desarrollo\srojas\codigo\Maga\Maga\MagaSeguridadUI\Views\Grupos\Index.aspx    Line: 43

Stack Trace:

[ArgumentException: DbSortClause expressions must have a type that is order comparable.
Parameter name: key]
   System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateSortClause(DbExpression key) +7633637
   System.Data.Common.CommandTrees.ExpressionBuilder.DbExpressionBuilder.ToSortClause(DbExpression key) +10
   System.Data.Objects.ELinq.OrderByTranslatorBase.TranslateOneLambda(ExpressionConverter parent, DbExpressionBinding sourceBinding, DbExpression lambda) +99
   System.Data.Objects.ELinq.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) +112
   System.Data.Objects.ELinq.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) +37
   System.Data.Objects.ELinq.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) +14
   System.Data.Objects.ELinq.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) +102
   System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
   System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
   System.Data.Objects.ELinq.UnarySequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) +58
   System.Data.Objects.ELinq.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) +14
   System.Data.Objects.ELinq.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) +102
   System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
   System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
   System.Data.Objects.ELinq.ExpressionConverter.Convert() +16
   System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption) +110
   System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +149
   System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +44
   Telerik.Web.Mvc.Extensions.EnumerableExtensions.Each(IEnumerable`1 instance, Action`1 action) +115
   Telerik.Web.Mvc.UI.GridHtmlBuilder`1.AppendRows(IHtmlNode body, IEnumerable`1 dataSource) +491
   Telerik.Web.Mvc.UI.GridHtmlBuilder`1.CreateBody() +572
   Telerik.Web.Mvc.UI.GridHtmlBuilder`1.BuildCore() +594
   Telerik.Web.Mvc.UI.HtmlBuilderBase.Build() +72
   Telerik.Web.Mvc.UI.Grid`1.WriteHtml(HtmlTextWriter writer) +1133
   Telerik.Web.Mvc.UI.ViewComponentBase.Render() +147
   Telerik.Web.Mvc.UI.ViewComponentBuilderBase`2.Render() +55
   ASP.views_grupos_index_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer) in c:\Desarrollo\srojas\codigo\Maga\Maga\MagaSeguridadUI\Views\Grupos\Index.aspx:43
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +109
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Desarrollo\srojas\codigo\Maga\Maga\MagaSeguridadUI\Views\Shared\Site.Master:30
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +109
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +208
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +56
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3060

thank you

3 Answers, 1 is accepted

Sort by
0
sebrojas
Top achievements
Rank 1
answered on 19 Jul 2010, 11:59 PM
I try to use this annotation in the class Employee, but didn't work

[DisplayColumn("Name", "Name")]

The first argument is the display column and the second is the order column, but both doesn't work!

Any suggestion?
0
Atanas Korchev
Telerik team
answered on 20 Jul 2010, 07:09 AM
Hello sebrojas,

As the exception suggests the grid can sort only by primitive types (strings, enums, integers etc). If you need to sort by custom object you need to implement custom binding.

All the best,
Atanas Korchev
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
sebrojas
Top achievements
Rank 1
answered on 21 Jul 2010, 03:02 PM
Ok Antanas, I donna tyr it. And other question, with custom bindig how can I do grouping?
thanks!
Tags
Grid
Asked by
sebrojas
Top achievements
Rank 1
Answers by
sebrojas
Top achievements
Rank 1
Atanas Korchev
Telerik team
Share this question
or