Hi again Radzen
I'm having some difficulty rendering items in a DataList, and I'm sure I'm just missing something small. These are the steps I've followed in a Northwind WASM testing project from the Radzen IDE:
In a new empty page, add a DataList component.
Properties > Data > New > GetOrders > Allow paging > Save
See that Count is set to ${getOrdersCount}, Data to ${getOrdersResult}
Open template designer, add Heading component, set Text to ${data.Id.ToString()}
No items on the page in the browser
Inspecting the network request, this is what I see:
https://localhost:5001/odata/AppDb/Orders?$top=10&$skip=0&$count=true
Could you please assist in pointing out what I'm missing?
Thank you!
enchev
March 8, 2021, 9:16am
2
Hi @damian_s ,
Can you post the generated code as well?
Hi @enchev , sure thing:
@page "/another-test"
@layout MainLayout
@inherits RadzenTestWa.Pages.AnotherTestComponent
@using Radzen
@using Radzen.Blazor
@using RadzenTestWa.Models.AppDb
@using Microsoft.AspNetCore.Identity;
@using RadzenTestWa.Models
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
<RadzenContent Container="main">
<ChildContent>
<RadzenHeading Size="H1" Text="Another test">
</RadzenHeading>
<RadzenDataList @ref="datalist0" AllowPaging="true" Count="@getOrdersCount" Data="@getOrdersResult" TItem="RadzenTestWa.Models.AppDb.Order" PageSize="10" LoadData="@Datalist0LoadData">
<Template Context="radzenTestWaModelsAppDbOrder">
<RadzenHeading Size="H3" Text="@(radzenTestWaModelsAppDbOrder.Id.ToString())">
</RadzenHeading>
</Template>
</RadzenDataList>
<RadzenHeading Size="H3" Visible="@(getOrdersResult != null)">
</RadzenHeading>
</ChildContent>
</RadzenContent>
using Radzen;
using Radzen.Blazor;
using RadzenTestWa.Models.AppDb;
using Microsoft.AspNetCore.Identity;
using RadzenTestWa.Models;
using RadzenTestWa.Client.Pages;
namespace RadzenTestWa.Pages
{
public partial class AnotherTestComponent : ComponentBase
{
[Parameter(CaptureUnmatchedValues = true)]
public IReadOnlyDictionary<string, dynamic> Attributes { get; set; }
public void Reload()
{
InvokeAsync(StateHasChanged);
}
public void OnPropertyChanged(PropertyChangedEventArgs args)
{
}
[Inject]
protected IJSRuntime JSRuntime { get; set; }
[Inject]
protected NavigationManager UriHelper { get; set; }
[Inject]
protected DialogService DialogService { get; set; }
[Inject]
protected TooltipService TooltipService { get; set; }
[Inject]
protected ContextMenuService ContextMenuService { get; set; }
[Inject]
protected NotificationService NotificationService { get; set; }
[Inject]
protected SecurityService Security { get; set; }
[Inject]
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
[Inject]
protected AppDbService AppDb { get; set; }
protected RadzenDataList<RadzenTestWa.Models.AppDb.Order> datalist0;
IEnumerable<RadzenTestWa.Models.AppDb.Order> _getOrdersResult;
protected IEnumerable<RadzenTestWa.Models.AppDb.Order> getOrdersResult
{
get
{
return _getOrdersResult;
}
set
{
if (!object.Equals(_getOrdersResult, value))
{
var args = new PropertyChangedEventArgs(){ Name = "getOrdersResult", NewValue = value, OldValue = _getOrdersResult };
_getOrdersResult = value;
OnPropertyChanged(args);
Reload();
}
}
}
int _getOrdersCount;
protected int getOrdersCount
{
get
{
return _getOrdersCount;
}
set
{
if (!object.Equals(_getOrdersCount, value))
{
var args = new PropertyChangedEventArgs(){ Name = "getOrdersCount", NewValue = value, OldValue = _getOrdersCount };
_getOrdersCount = value;
OnPropertyChanged(args);
Reload();
}
}
}
protected override async System.Threading.Tasks.Task OnInitializedAsync()
{
await Security.InitializeAsync(AuthenticationStateProvider);
if (!Security.IsAuthenticated())
{
UriHelper.NavigateTo("Login", true);
}
}
protected async System.Threading.Tasks.Task Datalist0LoadData(dynamic args)
{
var appDbGetOrdersResult = await AppDb.GetOrders(top:args.Top, skip:args.Skip, count:args.Top != null && args.Skip != null);
getOrdersResult = appDbGetOrdersResult.Value.AsODataEnumerable();
getOrdersCount = appDbGetOrdersResult.Count;
}
}
}
enchev
March 8, 2021, 11:54am
4
Everything looks correct. Can you check for errors in Radzen output window or browser console?
Everything looks good there too.
enchev
March 8, 2021, 12:27pm
6
Hi @damian_s ,
I've managed to reproduce the problem - it was caused by LoadData event handler arguments type (generated as dynamic). Fix will be released later today.
That's great news - thank you!
I tried different variations and can report that unselecting Allow paging
fails to generate the method to be called on the load event:
Might be related.
enchev
March 8, 2021, 1:04pm
8
Hi @damian_s ,
Not related however we've fixed this as well.