travail sur les checkbox

blazor
Patrick BRUGIERE 1 year ago
parent b431fc0535
commit 1ee9df5124

@ -9,6 +9,7 @@ namespace adminBlazor.Models
[StringLength(50, ErrorMessage = "Name length can't be more than 50.")] [StringLength(50, ErrorMessage = "Name length can't be more than 50.")]
[DataType(DataType.Password)] [DataType(DataType.Password)]
[Required]
public string Password { get; set; } public string Password { get; set; }
[EmailAddress] [EmailAddress]
@ -28,7 +29,8 @@ namespace adminBlazor.Models
public string Image { get; set; } public string Image { get; set; }
public bool ExtraTime { get; set; } public bool ExtraTime { get; set; }
[Range(0,100)]
public int Group { get; set; } public int Group { get; set; }
public List<String> Roles { get; set; } public List<String> Roles { get; set; }

@ -13,9 +13,9 @@
</label> </label>
</p> </p>
<p> <p>
<label for="stack-size"> <label for="password">
Password: Password:
<InputText id="stack-size" @bind-Value="user.Password" /> <InputText id="password" @bind-Value="user.Password" type="password" />
</label> </label>
</p> </p>
<p> <p>
@ -24,17 +24,42 @@
<InputText id="max-durability" @bind-Value="user.Email" /> <InputText id="max-durability" @bind-Value="user.Email" />
</label> </label>
</p> </p>
@*
<p> <p>
Roles categories: Roles categories:
<div> <div>
@foreach (var item in roles) @foreach (var item in roles)
{ {
<label> <label>
<input type="checkbox" @onchange="@(e => RolesCategoriesChange(item, e.Value))" />@item <input type="checkbox" @onchange="@(e => RolesCategoriesChange(item, e.Value))"
checked="@user.Roles.Contains(item)" />@item
</label> </label>
} }
</div> </div>
</p> </p>
*@
<p>roles
<div>
@foreach (var role in roles)
{
var currentItem = role; // Capturer la variable locale pour éviter les problèmes de fermeture
@if (currentItem == "student")
{
<label>
<input type="checkbox" @onchange="@(e => RolesCategoriesChange(role, e.Value))" />
Student
</label>
break;
}
<label>
<input type="checkbox" @onchange="@(e => RolesCategoriesChange(role, e.Value))" disabled="@disableOtherCheckboxes" checked="@user.Roles.Contains(currentItem)" />
@currentItem
</label>
<br />
}
</div>
</p>
<p> <p>
<label> <label>
Nickname Nickname

@ -20,7 +20,7 @@ namespace adminBlazor.Pages
/// <summary> /// <summary>
/// The default enchant categories. /// The default enchant categories.
/// </summary> /// </summary>
private List<string> roles = new List<string>() { "admin","teacher","student" }; private List<string> roles = new List<string>() { "admin","teacher", "student" };
/// <summary> /// <summary>
@ -85,19 +85,85 @@ namespace adminBlazor.Pages
} }
} }
*/ */
private bool isStudentChecked = false;
private void RolesCategoriesChange(string item, object checkedValue) private bool disableOtherCheckboxes = false;
private void StudentCheckboxChange(string currentItem, object checkedValue)
{
if (currentItem == "student")
{
if (isStudentChecked)
{
// Activer les autres cases à cocher si "Étudiant" est cochée
disableOtherCheckboxes = true;
if (!user.Roles.Contains(currentItem))
{
user.Roles.Add(currentItem);
}
}
else
{
// Désactiver les autres cases à cocher si "Étudiant" est décochée
disableOtherCheckboxes = false;
user.Roles.Remove(currentItem);
}
}
}
private void OtherCheckboxChange(string currentItem)
{ {
if ((bool)checkedValue) if (isStudentChecked && currentItem != "student")
{ {
if (!user.Roles.Contains(item)) // Si "Étudiant" est coché, désactiver les autres cases
disableOtherCheckboxes = true;
if (!user.Roles.Contains(currentItem))
{ {
user.Roles.Add(item); user.Roles.Add(currentItem);
} }
}
else
{
// Sinon, activer les autres cases
disableOtherCheckboxes = false;
user.Roles.Remove(currentItem);
}
}
private void RolesCategoriesChange(string item, object checkedValue)
{
if (item == "student")
{
isStudentChecked = (bool)checkedValue;
return; if (isStudentChecked)
{
// Activer les autres cases à cocher si "Étudiant" est cochée
disableOtherCheckboxes = true;
if (!user.Roles.Contains(item))
{
user.Roles.Add(item);
}
}
else
{
// Désactiver les autres cases à cocher si "Étudiant" est décochée
disableOtherCheckboxes = false;
user.Roles.Remove(item);
}
}
else
{
if ((bool)checkedValue)
{
if (!user.Roles.Contains(item))
{
user.Roles.Add(item);
}
}
else
{
user.Roles.Remove(item);
}
} }
} }
} }
} }
Loading…
Cancel
Save