Let's just say I have data from my DB and I want to load it like this
in my razor component, I have this:
@if(selectedUser != null){
@foreach (var items in User)
{
<tr>
<td><input type="checkbox" @bind="valueChanged" @onclick="()=>ShowProfile(items)"> @items.CarestaffId </td>
<td>@items.FirstName @items.MiddleInitial. @items.LastName</td>
<td> @items.Title </td>
<td> @items.Status </td>
</tr>
}
}
Inside my c# code:
//this is a hidden div that will appear if checkbox was ticked
private bool DisplayProfile { get; set; } = true;
private bool valueChanged { get; set; } = false;
private User selectedUser;
private void ShowProfile(User user)
{
valueChanged = true;
selectedUser= user;
if(valueChanged)
{
DisplayProfile = false;
}
}
What I want is to automatically uncheck the previous checkbox when I check another checkbox because when I try to manipulate the checkbox, it's either all the checkboxes were checked / unchecked when the value changed.
the issue here is that you bind every check boxes to a single field
valueChanged. So when this value is false, every check box will be "off", and vice-versa.What you might want to do is to bind the check boxes to a field in your
Userclass. Something like:By the way, I advise you to rename the name that you use in your for each loop:
@foreach (var items in User)becomes@foreach (var user in Users), which will be more logical.