Files
radzen-blazor/RadzenBlazorDemos/Pages/DataListLoadData.razor
2024-07-26 08:50:50 +03:00

81 lines
3.7 KiB
Plaintext

@using RadzenBlazorDemos.Data
@using RadzenBlazorDemos.Models.Northwind
@using Microsoft.EntityFrameworkCore
@inject NorthwindODataService service
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Gap="0.5rem" class="rz-p-2">
<RadzenCheckBox @bind-Value="@allowVirtualization" Name="allowVirtualization" />
<RadzenLabel Text="Allow virtualization" Component="allowVirtualization" />
</RadzenStack>
<RadzenDataList AllowVirtualization=@allowVirtualization Style="@(allowVirtualization ? "height:400px;overflow:auto;" : "")"
WrapItems="@(!allowVirtualization)" AllowPaging="@(!allowVirtualization)" IsLoading=@isLoading LoadData=@LoadData
Data="@products" Count=@count TItem="Product" PageSize="5" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true">
<Template Context="product">
<RadzenCard Variant="Variant.Outlined" class="rz-p-0" Style="width: 100%; overflow: hidden;">
<RadzenRow Gap="0">
<RadzenColumn Size="12" SizeLG="3" class="rz-p-4 product-title">
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-color-on-secondary-lighter">@(product.ProductName)</RadzenText>
</RadzenColumn>
<RadzenColumn Size="12" SizeLG="7" class="rz-p-4">
<RadzenRow Gap="0">
<RadzenColumn Size="12" SizeMD="6" SizeLG="2">
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">In Stock</RadzenText>
<RadzenText TextStyle="TextStyle.Body2">@(product.UnitsInStock)</RadzenText>
</RadzenColumn>
<RadzenColumn Size="12" SizeMD="6" SizeLG="2">
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">Origin</RadzenText>
<RadzenText TextStyle="TextStyle.Body2">@(product.Supplier?.Country)</RadzenText>
</RadzenColumn>
<RadzenColumn Size="12" SizeMD="6" SizeLG="5">
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">Sold by</RadzenText>
<RadzenText TextStyle="TextStyle.Body2">@(product.Supplier?.CompanyName)</RadzenText>
</RadzenColumn>
<RadzenColumn Size="12" SizeMD="6" SizeLG="3" class="rz-text-align-start rz-text-align-lg-end">
<RadzenBadge BadgeStyle="BadgeStyle.Secondary" Shade="Shade.Lighter" class="price-badge" Text=@($"{String.Format(new System.Globalization.CultureInfo("en-US"), "{0:C}", product.UnitPrice)}") />
</RadzenColumn>
</RadzenRow>
</RadzenColumn>
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4">
<RadzenButton Text="Order now" Style="width: 100%" />
</RadzenColumn>
</RadzenRow>
</RadzenCard>
</Template>
</RadzenDataList>
<style>
.product-title {
min-height: 72px;
background-color: var(--rz-secondary-lighter);
}
.price-badge {
font-size: 16px;
font-weight: bold;
line-height: 20px;
padding: 8px;
}
</style>
@code {
bool allowVirtualization;
int count;
bool isLoading;
IEnumerable<Product> products;
async Task LoadData(LoadDataArgs args)
{
isLoading = true;
var result = await service.GetProducts(top: args.Top, skip: args.Skip, count: true);
// Update the Data property
products = result.Value.AsODataEnumerable();
// Update the count
count = result.Count;
isLoading = false;
}
}