Is it possible to show (modal confirmation) handle filtering before apply? Show pop-up modal, and when Confirm, start filtering, othewise cancel!!
Hello Zaher,
To achieve this, you need to:
With this in mind, I am marking this as Declined, because this is a highly specific application UX that is not something the grid can and should do out-of-the-box.
Regards,
Marin Bratanov
Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.
public FilterDescriptor PatientIdFilterDescriptor
=> PatientIdFilterMenuTemplateContext.FilterDescriptor.FilterDescriptors[0] as FilterDescriptor;
public string PatientDescriptor
{
get => (PatientIdFilterDescriptor).Value as string;
set
{
(PatientIdFilterDescriptor).Value = value;
}
}
<GridColumn Field="@(nameof(HealthCareClaimSpecificationDTO.PatientId))" Title="Patient Id" FilterMenuType="@FilterMenuType.Menu">
<Template>
@{
var row = context as HealthCareClaimSpecificationDTO;
var claimDueDate = row.MaskedPatientId;
<span>@row.MaskedPatientId</span>
}
</Template>
<FilterMenuTemplate>
@{
PatientIdFilterMenuTemplateContext = context;
}
<label class="filter-modal-margin" for="patientId">Sök:</label>
<TelerikTextBox Id="patientId" @bind-Value="@PatientDescriptor"></TelerikTextBox>
</FilterMenuTemplate>
</GridColumn>
protected async Task OnStateChangedHandler(GridStateEventArgs<HealthCareClaimSpecificationDTO> args)
{
var gridState = GridRef.GetState();
if (args.PropertyName == "FilterDescriptors")
{
await LogUserAction(gridState);
}
await GridHelper.SaveState(HealthCareClaimsGridState, gridState);
}
private async Task LogUserAction(GridState<HealthCareClaimSpecificationDTO> gridState)
{
foreach (var filterItem in gridState.FilterDescriptors)
{
var descriptors = (filterItem as CompositeFilterDescriptor).FilterDescriptors;
if (descriptors == null || !descriptors.Any())
{
continue;
}
if (descriptors.Any())
{
foreach (FilterDescriptor filterDescriptor in descriptors)
{
if (filterDescriptor.Member.Equals(nameof(HealthCareClaimSpecificationDTO.PatientId)) && filterDescriptor.Value != null)
{
CurrentPatientId = filterDescriptor.Value.ToString();
if (!string.IsNullOrEmpty(CurrentPatientId))
{
await PDLLogHelper.AddLogAsync(PDLLogActivityType.Read, PDLLogActivityLevel.Overview, filterDescriptor.Value.ToString());
Modal.SetVisibility(true);
CurrentPatientIdFilterDescriptor = filterDescriptor;
await JsInterop.InvokeAsync<object>("resetPatientIdFilterOnEscape", new object[] { DotNetObjectReference.Create(this) });
}
}
}
}
}
}