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.")]
[DataType(DataType.Password)]
[Required]
public string Password { get; set; }
[EmailAddress]
@ -29,6 +30,7 @@ namespace adminBlazor.Models
public bool ExtraTime { get; set; }
[Range(0,100)]
public int Group { get; set; }
public List<String> Roles { get; set; }

@ -13,9 +13,9 @@
</label>
</p>
<p>
<label for="stack-size">
<label for="password">
Password:
<InputText id="stack-size" @bind-Value="user.Password" />
<InputText id="password" @bind-Value="user.Password" type="password" />
</label>
</p>
<p>
@ -24,17 +24,42 @@
<InputText id="max-durability" @bind-Value="user.Email" />
</label>
</p>
@*
<p>
Roles categories:
<div>
@foreach (var item in roles)
{
<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>
}
</div>
</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>
<label>
Nickname

@ -20,7 +20,7 @@ namespace adminBlazor.Pages
/// <summary>
/// The default enchant categories.
/// </summary>
private List<string> roles = new List<string>() { "admin","teacher","student" };
private List<string> roles = new List<string>() { "admin","teacher", "student" };
/// <summary>
@ -85,8 +85,72 @@ namespace adminBlazor.Pages
}
}
*/
private bool isStudentChecked = false;
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 (isStudentChecked && currentItem != "student")
{
// Si "Étudiant" est coché, désactiver les autres cases
disableOtherCheckboxes = true;
if (!user.Roles.Contains(currentItem))
{
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;
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)
{
@ -94,10 +158,12 @@ namespace adminBlazor.Pages
{
user.Roles.Add(item);
}
return;
}
else
{
user.Roles.Remove(item);
}
}
}
}
}
Loading…
Cancel
Save