Hello, I have problems with toggling checkbox in edit mode. The checkbox does not toggle or I have to hold space for longer period of time and be lucky to toggle it. It also leaves a green frame around the checkbox after editing.
@page "/agenda"
@using TestCore.Models
@using TestCore.Datalayer
@using Microsoft.EntityFrameworkCore
@inject CisAgendaService cisAgendaService
@inject DBContext dbContext
<h3>CisAgenda</h3>
<br />
<table class="table">
@if(cisAgenda == null){
<p>Loading...</p>
}
else
{
<RadzenButton style="margin-bottom: 10px" Text="Přidat novou položku" Click="@InsertRow" Disabled=@(cisAgendaToInsert != null)/>
<RadzenDataGrid @ref="agendaGrid" AllowPaging="true" PageSize="10" AllowSorting="true" EditMode="DataGridEditMode.Single"
Data="@agends" TItem="CisAgenda" ColumnWidth="1300px" RowCreate="@OnCreateRow" RowUpdate="@OnUpdateRow">
<Columns>
<RadzenDataGridColumn Title="Popis Agenda" TItem="CisAgenda" Property="PopisAgenda" Width="1000px">
<EditTemplate Context="cisAgenda">
<RadzenTextBox @bind-Value="cisAgenda.PopisAgenda" Style="width:100%; display: block" Name="PopisAgenda" />
<RadzenRequiredValidator Text="Text je vyžadován" Component="PopisAgenda" Popup="true" />
</EditTemplate>
</RadzenDataGridColumn>
<RadzenDataGridColumn Title="DlouhodobeAn" TItem="CisAgenda" Property="DlouhodobeAn" Width="100px" TextAlign="TextAlign.Center">
<Template Context="cisAgenda">
<RadzenCheckBox @bind-Value="cisAgenda.DlouhodobeAn" Style="width:100%; display: block" Name="DlouhodobeAn" TValue="bool"/>
</Template>
<EditTemplate Context="cisAgenda">
<RadzenCheckBox @bind-Value="cisAgenda.DlouhodobeAn" Style="width:100%; display: block" Name="DlouhodobeAn"/>
</EditTemplate>
</RadzenDataGridColumn>
<RadzenDataGridColumn Title="Upravit" TItem="CisAgenda" Context="sampleBlazorModelsSampleOrder" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="120px">
<Template Context="cisAgenda">
<RadzenButton Icon="upravit" ButtonStyle="ButtonStyle.Light" Class="m-1" Click="@(args => EditRow(cisAgenda))" @onclick:stopPropagation="true">
</RadzenButton>
</Template>
<EditTemplate Context="cisAgenda">
<RadzenButton Icon="uložit" ButtonStyle="ButtonStyle.Primary" Class="m-1" Click="@((args) => SaveRow(cisAgenda))">
</RadzenButton>
<RadzenButton Icon="zavřít" ButtonStyle="ButtonStyle.Light" Class="m-1" Click="@((args) => CancelEdit(cisAgenda))">
</RadzenButton>
</EditTemplate>
</RadzenDataGridColumn>
<RadzenDataGridColumn Title="Smazat" TItem="CisAgenda" Context="order" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="cisAgenda">
<RadzenButton ButtonStyle="ButtonStyle.Danger" Icon="smazat" Size="ButtonSize.Small" Class="m-1" Click="@(args => DeleteRow(cisAgenda))" @onclick:stopPropagation="true">
</RadzenButton>
</Template>
<EditTemplate Context="cisAgenda">
<RadzenButton ButtonStyle="ButtonStyle.Danger" Icon="smazat" Size="ButtonSize.Small" Class="m-1" Click="@(args => DeleteRow(cisAgenda))">
</RadzenButton>
</EditTemplate>
</RadzenDataGridColumn>
</Columns>
</RadzenDataGrid>
}
</table>
@code{
RadzenDataGrid<CisAgenda> agendaGrid;
IEnumerable<CisAgenda> cisAgenda;
IList<CisAgenda> agends;
protected override async Task OnInitializedAsync()
{
cisAgenda = await Task.Run(()=>cisAgendaService.GetCisAgendas());
agends = dbContext.Agendas.ToList();
}
async Task EditRow(CisAgenda cisAgenda)
{
await agendaGrid.EditRow(cisAgenda);
}
void OnUpdateRow(CisAgenda cisAgenda)
{
if(cisAgenda == cisAgendaToInsert)
{
cisAgendaToInsert = null;
}
dbContext.Update(cisAgenda);
dbContext.SaveChanges();
}
async Task SaveRow(CisAgenda cisAgenda)
{
if(cisAgenda == cisAgendaToInsert)
{
cisAgendaToInsert = null;
}
await agendaGrid.UpdateRow(cisAgenda);
}
void CancelEdit(CisAgenda cisAgenda)
{
if (cisAgenda == cisAgendaToInsert)
{
cisAgendaToInsert = null;
}
agendaGrid.CancelEditRow(cisAgenda);
var cisAgendaEntry = dbContext.Entry(cisAgenda);
if (cisAgendaEntry.State == EntityState.Modified){
cisAgendaEntry.CurrentValues.SetValues(cisAgendaEntry.OriginalValues);
cisAgendaEntry.State = EntityState.Unchanged;
}
}
async Task DeleteRow(CisAgenda cisAgenda)
{
if(cisAgenda == cisAgendaToInsert)
{
cisAgendaToInsert = null;
}
if(agends.Contains(cisAgenda))
{
dbContext.Remove<CisAgenda>(cisAgenda);
dbContext.SaveChanges();
agends.Remove(cisAgenda);
await agendaGrid.Reload();
}
else
{
agendaGrid.CancelEditRow(cisAgenda);
}
}
CisAgenda cisAgendaToInsert;
async Task InsertRow()
{
cisAgendaToInsert = new CisAgenda();
cisAgendaToInsert.GidProjekt = Guid.NewGuid();
cisAgendaToInsert.PopisAgenda="text";
await agendaGrid.InsertRow(cisAgendaToInsert);
}
void OnCreateRow(CisAgenda cisAgenda)
{
dbContext.Add(cisAgenda);
dbContext.SaveChanges();
}
}