I've tried to use simple class for the list with the string property Name and set the TextProperty="Name" on the dropdown box but now I'm getting an error. Radzn.Blazor v2.18.6
IEnumerable<TestClass> _authRolesList;
public class TestClass
{
public long Id { get; set; }
public string Name { get; set; }
}
<RadzenDropDown @bind-Value="order.RolesList" Data="@_authRolesList" Style="width: 100%" Multiple="true"
AllowClear="true" Name="RolesName" TextProperty="Name" ValueProperty="Name">
</RadzenDropDown>
warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
Unhandled exception rendering component: Collection was modified; enumeration operation may not execute.
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
at System.Linq.Enumerable.CastIterator[TResult](IEnumerable source)+MoveNext()
at Radzen.DropDownBase`1.SelectItemFromValue(Object value)
at Radzen.DropDownBase`1.OnParametersSetAsync()
at Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()
at Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView parameters)
at Radzen.RadzenComponent.<>n__0(ParameterView parameters)
at Radzen.RadzenComponent.SetParametersAsync(ParameterView parameters)
at Radzen.DropDownBase`1.SetParametersAsync(ParameterView parameters)
at Radzen.Blazor.RadzenDropDown`1.SetParametersAsync(ParameterView parameters)
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Unhandled exception in circuit 'jNxGKLA069-ja4BoOanzbQpo0PByd9GfKpdzLzcA-_0'.
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
at System.Linq.Enumerable.CastIterator[TResult](IEnumerable source)+MoveNext()
at Radzen.DropDownBase`1.SelectItemFromValue(Object value)
at Radzen.DropDownBase`1.OnParametersSetAsync()
at Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()
at Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView parameters)
at Radzen.RadzenComponent.<>n__0(ParameterView parameters)
at Radzen.RadzenComponent.SetParametersAsync(ParameterView parameters)
at Radzen.DropDownBase`1.SetParametersAsync(ParameterView parameters)
at Radzen.Blazor.RadzenDropDown`1.SetParametersAsync(ParameterView parameters)
warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
Unhandled exception rendering component: Cannot access a disposed object.
System.ObjectDisposedException: Cannot access a disposed object.
at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.ThrowObjectDisposedException()
at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.GrowBuffer(Int32 desiredCapacity)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendStepOut(DiffContext& diffContext)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)
at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Unhandled exception in circuit 'jNxGKLA069-ja4BoOanzbQpo0PByd9GfKpdzLzcA-_0'.
System.ObjectDisposedException: Cannot access a disposed object.
at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.ThrowObjectDisposedException()
at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.GrowBuffer(Int32 desiredCapacity)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendStepOut(DiffContext& diffContext)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)
at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
You can try making the RoleList property IList. IEnumerable does not support adding and removing items. Check how this is done in our demo (DropDown with multiple selection).
Thanks, but the provided example also has IEnumerable. IEnumerable<string> multipleValues. If I change it to IList as suggested I get an error on value select.
warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
Unhandled exception rendering component: Unable to cast object of type 'System.Linq.EnumerableQuery`1[System.String]' to type 'System.Collections.Generic.IList`1[System.String]'.
System.InvalidCastException: Unable to cast object of type 'System.Linq.EnumerableQuery`1[System.String]' to type 'System.Collections.Generic.IList`1[System.String]'.
at Radzen.DropDownBase`1.SelectItem(Object item, Boolean raiseChange)
at Radzen.Blazor.RadzenDropDown`1.OnSelectItem(Object item, Boolean isFromKey)
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Unhandled exception in circuit '4AdO892EyfFeE9ShMo4_1HPUXLlAd2jMcQo-f8Nm1cA'.
System.InvalidCastException: Unable to cast object of type 'System.Linq.EnumerableQuery`1[System.String]' to type 'System.Collections.Generic.IList`1[System.String]'.
at Radzen.DropDownBase`1.SelectItem(Object item, Boolean raiseChange)
at Radzen.Blazor.RadzenDropDown`1.OnSelectItem(Object item, Boolean isFromKey)
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)
But I assume it only works if _authRolesList items represents a class with properties and I have to set TextProperty="Name" ValueProperty="Name". Is it possible to bind to a simple string list? Had no luck with it yet.