最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

c# - Filter for Timespan in RadzenDataGrid - Stack Overflow

programmeradmin4浏览0评论

I have a RadzenDataGrid where I display a Timespan that comes from a DB. When I want to filter the timespan (e.g. for "is not null", nothing happens and the args.Filter has no value, so it is just "it => ". Any ideas if this is even possible with timespans? Here the datagrid:

 <RadzenDataGrid @ref="_grid" AllowFiltering="true" AllowColumnResize="true" 
                 FilterMode="@FilterMode.Advanced" LoadData="@LoadData" Data="@_shipments">
  <Columns>
    <RadzenDataGridColumn TItem="SdShipment" Property="@nameof(SdShipment.OrderNumber)" Title="Order Number" Frozen="true" />
    <RadzenDataGridColumn TItem="Shipment" Property="LifeSpan" Title="Life Span" Sortable="true" Filterable="true">
        <Template Context="data">
            @((data.LifeSpan.HasValue) ? data.LifeSpan.Value.Days.ToString() : "N/A")
        </Template>
    </RadzenDataGridColumn>
    <RadzenDataGridColumn TItem="Shipment" Property="Material.Type" Title="Material Type" />
    <RadzenDataGridColumn TItem="Shipment" Property="Asset.AssetType" Title="Asset Type" />
  </Columns>
</RadzenDataGrid>

private async Task LoadData(LoadDataArgs args)
{
  _isLoading = true;
  await InvokeAsync(StateHasChanged);
       
  try
  {
    await using var context = await ContextFactory.CreateDbContextAsync();
    var query = context.shipments
                .AsQueryable();

    var filterActive = false;
    if(!string.IsNullOrEmpty(args.Filter))
    {
      query = query.Where(args.Filter);
      filterActive = true;
    }
    
    if(!string.IsNullOrEmpty(args.OrderBy))
    {
                
      query = query.OrderBy(args.OrderBy);
    }
      _shipments = query.Skip(args.Skip ?? 0).Take(args.Top ?? 250).ToList();
    }
    catch(Exception ex)
    {
      ...
    }
    finally
    {
      _isLoading = false;
      await InvokeAsync(StateHasChanged);
    }
}
                
发布评论

评论列表(0)

  1. 暂无评论