Hello,
I have a RadzenGrid with a RadzenGridColumn that has a RadzenButton to open another Razor Page to edit the object.
When I click the RadzenButton, I pass it a parameter with the id of the object to load all the object information.
The class of the object has [NotMapped] properties that are computed. When the Edit Page is loading, these properties are load more than once; once for each of the objects on the grid page (at least).
How can I avoid it?
Thanks you in advance.
enchev
November 4, 2021, 4:11pm
2
The default Edit page from CRUD pages will populate the form by calling getByXXX method of the service to get the object that will be edited. If your scenario is different you can use other approach.
My scenario is:
List.razor
<RadzenGrid @ref="gridActivos" Data="listaActivos" TItem="Activo" AllowPaging="true" PageSize="10" AllowSorting="true" AllowFiltering="false" AllowColumnResize="true"
FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive" EmptyText="No existen registros coincidentes con los criterios de búsqueda introducidos." >
<Columns>
<SpinLoader IsLoading="@isLoading">
<LoadingTemplate>
<Circle Color="#426e9a" Size="60px" Center="true" />
</LoadingTemplate>
<ContentTemplate>
<RadzenGridColumn TItem="Activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="40px">
<Template Context="activo">
<i class="@activo.iconoEstado" aria-hidden="true" style="color: @activo.colorInterfaz" title="@activo.EstadoAsignacion"></i>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Detalles">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="visibility" Click="@(args => DetailRow(activo))" Size="ButtonSize.Medium" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Editar">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="edit" Click="@(args => EditRow(activo))" Size="ButtonSize.Medium" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Eliminar">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Danger" Icon="delete" Click="@(args => DeleteRow(activo))" Size="ButtonSize.Medium" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="idTipoActivoNavigation.Nombre" Title="Tipo activo" Width="120px">
<FooterTemplate>
Activos: <b>@gridActivos.View.Count()</b>
</FooterTemplate>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="NumSerie" Title="Nº Serie" Width="130px" />
<RadzenGridColumn TItem="Activo" Property="idEstadoNavigation.Nombre" Title="Estado" Width="100px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Ver histórico estados">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="history" Click="@(args => VerEstados(activo))" Size="ButtonSize.Medium" Visible="@(activo.NumeroEstados > 1)" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="idFabricanteNavigation.Nombre" Title="Fabricante" Width="120px" />
<RadzenGridColumn TItem="Activo" Property="idModeloNavigation.Nombre" Title="Modelo" Width="200px" />
<RadzenGridColumn TItem="Activo" Property="TecnicoNombre" Title="Técnico" Width="200px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Ver más técnicos">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="group" Click="@(args => VerTecnicos(activo))" Size="ButtonSize.Medium" Visible="@(activo.NumeroTecnicos > 1)" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="UsuarioNombre" Title="Usuario" Width="200px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Ver más usuarios">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="group" Click="@(args => VerUsuarios(activo))" Size="ButtonSize.Medium" Visible="@(activo.NumeroUsuarios > 1)" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="NombreDominio" Title="Nombre Dominio" Width="200px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Ver más nombres de dominio">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="plus_one" Click="@(args => VerNombresDominio(activo))" Size="ButtonSize.Medium" Visible="@(activo.NumeroNombresDominio > 1)" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="FAdquisicion" Title="F. Adquisición" FormatString="{0:d}" Width="130px" />
<RadzenGridColumn TItem="Activo" Property="FFinMantmto" Title="F. Fin Mto." FormatString="{0:d}" Width="110px" />
<RadzenGridColumn TItem="Activo" Property="FBaja" Title="F. Baja" FormatString="{0:d}" Width="100px" />
<RadzenGridColumn TItem="Activo" Property="Patrimonio" Title="Patrimonio" Width="110px" />
<RadzenGridColumn TItem="Activo" Property="LocalizacionNombre" Title="Localización" Width="130px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Ver histórico ubicaciones">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="history" Click="@(args => VerUbicaciones(activo))" Size="ButtonSize.Medium" Visible="@(activo.NumeroUbicaciones > 1)" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="ClaveExpediente" Title="Expediente" Width="150px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Ver más expedientes">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="plus_one" Click="@(args => VerExpedientes(activo))" Size="ButtonSize.Medium" Visible="@(activo.NumeroExpedientes > 1)" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="ReferenciaContratoFabricante" Title="Ref. Cont. Fab." Width="140px" />
<RadzenGridColumn TItem="Activo" Property="Descripcion" Title="Descripción" Width="200px" />
<RadzenGridColumn TItem="Activo" Property="comentarioFormateado" Title="Comentario" Width="200px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Detalle comentario">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="visibility" Click="@(args => VerComentario(activo))" Size="ButtonSize.Medium" Visible="activo.comentarioFormateado.Length >= 25" />
</span>
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="Activo" Property="Cantidad" Title="Cantidad" Width="100px" />
<RadzenGridColumn TItem="Activo" Property="idConectadoANavigation.id_Activo" Title="Conectado A" Width="130px" />
<RadzenGridColumn TItem="Activo" Property="Propiedad" Title="Propiedad" Width="110px" />
<RadzenGridColumn TItem="Activo" Property="DireccionMAC" Title="Dirección MAC" Width="140px" />
<RadzenGridColumn TItem="Activo" Property="DireccionIP" Title="Dirección IP" Width="120px" />
<RadzenGridColumn TItem="Activo" Context="activo" Bubble="false" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="60px">
<Template Context="activo">
<span title="Ver más IP's">
<RadzenButton ButtonStyle="Radzen.ButtonStyle.Secondary" Icon="plus_one" Click="@(args => VerIPs(activo))" Size="ButtonSize.Medium" Visible="@(activo.NumeroIPs > 1)" />
</span>
</Template>
</RadzenGridColumn>
</ContentTemplate>
</SpinLoader>
</Columns>
</RadzenGrid>
protected void EditRow(Activo a)
{
navigationManager.NavigateTo("ActivoEditar/" + a.id_Activo);
}
EditActivo.razor
@page "/ActivoEditar/{IdActivo}"
[Parameter]
public string IdActivo { get; set; }
Activo activo = await service.GetActivoByIdActivo(int.Parse(IdActivo));
The Activo class has [NotMapped] properties than the page EditActivo.razor loads for each object of the page of the grid.