RadzenDataGrid multiselect error

This has been driving me up the wall. After updating I am getting the following error:

Microsoft.AspNetCore.Components.Web.ErrorBoundary[0]
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' does not contain a definition for 'Index'
at System.Object.CallSite.Target(Closure , CallSite , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[Object,Object](CallSite site, Object arg0)
at Radzen.Blazor.RadzenDataGrid1.<OnRowSelect>d__605[[<..>.Components.QuotesSelectorComponent.GroupData,<...<, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() at Radzen.Blazor.RadzenDataGrid1.d__604[[<...<.Components.QuotesSelectorComponent.GroupData, <...>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Radzen.Blazor.RadzenDataGrid1.<OnClick>d__688[[<...>.Components.QuotesSelectorComponent.GroupData, <...>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState) Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' does not contain a definition for 'Index' at System.Object.CallSite.Target(Closure , CallSite , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[Object,Object](CallSite site, Object arg0) at Radzen.Blazor.RadzenDataGrid1.d__605[[<...>.Components.QuotesSelectorComponent.GroupData, <...>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Radzen.Blazor.RadzenDataGrid1.<OnRowClick>d__604[[<..>.Components.QuotesSelectorComponent.GroupData, <..>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() at Radzen.Blazor.RadzenDataGrid1.d__688[[<...>.Components.QuotesSelectorComponent.GroupData, <...>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)

I have been looking at all data types for this multi-select datagrid but it all looks fine. Looking at the Radzen source code the Index property is created in the OnRowSelect. But still complaining about 'Index' not being a property.

I've never seen such error before and I don't know what this means. You can compare you multi select implementation with our demo to find what's different:

I did compare and didn't see differences. The demo doesn't show the error. But ... when I reverted back to version 5.9.9 of Radzen the error went away. Same code on my side, Radzen 6.0.20 gives me this error while Radzen 5.9.9 doesn't. I think it is related to the following code, just not sure how that would fail on Index not existing:

internal async System.Threading.Tasks.Task OnRowSelect(TItem item, bool raiseChange = true)
{
var focusedIndexResult = PagedView
.Select((x, i) => new { Item = x, Index = i })
.Where(itemWithIndex => ItemEquals(itemWithIndex.Item, item))
.FirstOrDefault();

        if (focusedIndexResult != null)
        {
            focusedIndex = focusedIndexResult.Index + 1;
        }

I also burned many hours on this after the update to v6, and just figured it out.

Had to make an account in case it helps you as well, it had to do with the visibility of the class used as the TItem, in my case it was internal, but flipping it to public fixed it!

Must be related to the updated dynamic LINQ implementation.

That solved that problem with the datagrid. But each time I upgrade to the 6.x version there are just new issues. Now when I click on the column sort in the datagrid I get the following (public class, public properties, property does exist). Appears that the LINQ switch caused a heap of trouble.

Microsoft.AspNetCore.Components.Web.ErrorBoundary[0]
System.ArgumentException: 'Years ' is not a member of type 'Client.Option' (Parameter 'propertyOrFieldName')
at System.Linq.Expressions.Expression.PropertyOrField(Expression expression, String propertyOrFieldName)
at Radzen.QueryableExtension.GetNestedPropertyExpression(Expression expression, String property, Type type)
at Radzen.QueryableExtension.OrderBy(IQueryable source, String selector)
at Radzen.QueryableExtension.OrderBy[QuoteOptimizationOption](IQueryable1 source, String selector) at Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].get_View()
at Radzen.PagedDataBoundComponent1[[Client.Option,Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].get_PagedView() at Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].DrawGroupOrDataRows(RenderTreeBuilder builder, IList1 visibleColumns) at Radzen.Blazor.RadzenDataGrid1.<>c__DisplayClass22_0[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].b__0(RenderTreeBuilder builder)
at Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(Int32 sequence, RenderFragment fragment)
at Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].<BuildRenderTree>b__680_0(RenderTreeBuilder __builder2) at Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(Int32 sequence, RenderFragment fragment) at Microsoft.AspNetCore.Components.CascadingValue1[[Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Radzen.Blazor, Version=6.2.3.0, Culture=neutral, PublicKeyToken=null]].Render(RenderTreeBuilder builder) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException) System.ArgumentException: 'Years ' is not a member of type 'Client.Option' (Parameter 'propertyOrFieldName') at System.Linq.Expressions.Expression.PropertyOrField(Expression expression, String propertyOrFieldName) at Radzen.QueryableExtension.GetNestedPropertyExpression(Expression expression, String property, Type type) at Radzen.QueryableExtension.OrderBy(IQueryable source, String selector) at Radzen.QueryableExtension.OrderBy[Option](IQueryable1 source, String selector)
at Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].get_View() at Radzen.PagedDataBoundComponent1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].get_PagedView()
at Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].DrawGroupOrDataRows(RenderTreeBuilder builder, IList1 visibleColumns)
at Radzen.Blazor.RadzenDataGrid1.<>c__DisplayClass22_0[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].<DrawRows>b__0(RenderTreeBuilder builder) at Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(Int32 sequence, RenderFragment fragment) at Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].b__680_0(RenderTreeBuilder __builder2)
at Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(Int32 sequence, RenderFragment fragment)
at Microsoft.AspNetCore.Components.CascadingValue1[[Radzen.Blazor.RadzenDataGrid1[[Client.Option, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Radzen.Blazor, Version=6.2.3.0, Culture=neutral, PublicKeyToken=null]].Render(RenderTreeBuilder builder)
at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)
(anonymous) @ invoke-js.ts:242
Fc @ invoke-js.ts:78
$do_icall @ dotnet.native.wasm-036e234e:0x1916b
$do_icall_wrapper @ dotnet.native.wasm-036e234e:0x1610e
$mono_interp_exec_method @ dotnet.native.wasm-036e234e:0x9d24
$interp_runtime_invoke @ dotnet.native.wasm-036e234e:0x1719c
$mono_jit_runtime_invoke @ dotnet.native.wasm-036e234e:0xfb2f5
$do_runtime_invoke @ dotnet.native.wasm-036e234e:0xc91b0
$mono_runtime_try_invoke @ dotnet.native.wasm-036e234e:0xc9997
$mono_runtime_invoke @ dotnet.native.wasm-036e234e:0xcbd1e
$mono_wasm_invoke_jsexport @ dotnet.native.wasm-036e234e:0x245450
Module._mono_wasm_invoke_jsexport @ dotnet.native.9mjuux7vgp.js:6287
gn @ managed-exports.ts:297
(anonymous) @ invoke-cs.ts:321
beginInvokeDotNetFromJS @ blazor.webassembly.js:1
invokeDotNetMethodAsync @ blazor.webassembly.js:1
invokeMethodAsync @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1
R @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1
invokeWhenHeapUnlocked @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1
R @ blazor.webassembly.js:1
I @ blazor.webassembly.js:1
dispatchGlobalEventToAllElements @ blazor.webassembly.js:1
onGlobalEvent @ blazor.webassembly.js:1
jsintero

Make sure you are using latest version of Razen.Blazor.

GRACIAS!!!!!!!!!!!!! :raised_hands: