I am dynamically filling the values of a dropdown list based of the content of a list. When a item in the dropdown is selected, an option to remove this item is shown. When the item is removed, it is first removed from the list and then the dropdown list is rebuilt, this is where I run in to problems.
Instead of returning the dropdown to its default value when it is rebuilt the value just below the removed one is shown as selected (this happens without the @onchange value being triggered).
How can I make the dropdown list return to its default value when it is being rebuilt?
Here is some Razor code:
<select class="form-control" @onchange="selectedValue">
<option value="">select one</option>
@foreach (var mod in values)
{
<option value="@mod.Id">@mod.Name</option>
}
</select>
The class named Items that is populating the list:
public class Items
{
public string Name { get; set; }
public int Id { get; set; }
public Items(string name, int id)
{
Name = name;
Id = id;
}
}
The list itself (before it is populated):
public List<Items> itm = new List<Items>();
The function that's called onchange:
public string SelectedValue = "";
public void selectedValue(ChangeEventArgs selectEvent)
{
SelectedValue = selectEvent.Value.ToString();
}
So to sum it up, this is what's happening:
- The list is populated with
Items - The select list is built of the items in the list using a
@foreachloop (see Razor code). - An item is selected from the dropdown, this runs the
selectedValue()function and changes the value and theSelectedValuestring - The selected item is deleted from the list of items
- The dropdown is rebuilt using the modified list
- The selected item is now set to the one directly below the deleted item, this is happening without
onchangebeing run. This is the problem - Now the selected value of the dropdown don't correspond to the one of the
SelectedValuestring.
This can probably be solved by setting the <select> element to its default option/value, but i can't figure out how to do this.
How can I change the selected value to be the default option (in my case the "select one" option with value "") of my dropdown list?