【问题标题】:Value cannot be null. (Parameter 'source') Error in Apex Chart in Blazor值不能为空。 (参数“源”)Blazor 中 Apex 图表中的错误
【发布时间】:2021-12-07 04:24:04
【问题描述】:

我在 blazor 中使用 Apex Chart 创建了一个简单的条形图组件。但是我收到了这个错误信息。

blazor.webassembly.js:1 关键:Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] 未处理的异常渲染组件:值不能为空。 (参数“来源”) System.ArgumentNullException:值不能为空。 (参数“来源”) 在 System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument 参数) 在 System.Linq.GroupedEnumerable2[[BlazorApexCharts.Docs.Order, BlazorApexCharts.Docs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Object, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]..ctor(IEnumerable1 源,Func2 keySelector, IEqualityComparer1 比较器) 在 System.Linq.Enumerable.GroupBy[Order,Object](IEnumerable1 source, Func2 keySelector) 在 ApexCharts.ApexPointSeries1[[BlazorApexCharts.Docs.Order, BlazorApexCharts.Docs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].GetData() in ..\ApexChart\Blazor-ApexCharts\src\Blazor-ApexCharts\Series\ApexPointSeries.cs:line 74 at ApexCharts.ApexChart1[[BlazorApexCharts.Docs.Order, BlazorApexCharts.Docs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].SetSeries() in ..\ApexChart\Blazor-ApexCharts\src \Blazor-ApexCharts\ApexChart.razor.cs:第 222 行 在 ApexCharts.ApexChart1.<Render>d__55[[BlazorApexCharts.Docs.Order, BlazorApexCharts.Docs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in ..\ApexChart\Blazor-ApexCharts\src\Blazor-ApexCharts\ApexChart.razor.cs:line 203 at ApexCharts.ApexChart1.d__44[[BlazorApexCharts.Docs.Order, BlazorApexCharts.Docs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in ..\ApexChart\Blazor-ApexCharts \src\Blazor-ApexCharts\ApexChart.razor.cs:第 46 行

条形图组件代码

@page "/test-bar-chart"
@using System.Net.Http
@using System.Net.Http.Json
@using System.Threading.Tasks
@inject HttpClient Http

<DemoContainer>
<ApexChart TItem="Order"
           Title="Order Net Value">

    <ApexPointSeries TItem="Order"
                Items="Orders"
                Name="Gross Value"
                XValue="@(e => e.Country)"
                YAggregate="@(e => e.Sum(e => e.GrossValue))"
                OrderByDescending="e=>e.Y"
                SeriesType="SeriesType.Bar"
                />

</ApexChart>
</DemoContainer>

@code {

    private List<Order> Orders { get; set; } 

    protected override async Task  OnInitializedAsync()
    {
        try
        {
            Orders=  await Http.GetFromJsonAsync<List<Order>>("/api/Apx");
        }
        catch (Exception ex)
        {
            Orders = null;
            Console.WriteLine(ex.Message);
        }

        
        await base.OnInitializedAsync();
    }


}

Order.cs

public class Order
{
    public Guid OrderId { get; set; } = Guid.NewGuid();
    public string CustomerName { get; set; }
    public string Country { get; set; }
    public DateTimeOffset OrderDate { get; set; }
    public OrderType OrderType { get; set; }
    public decimal GrossValue { get; set; }
    public decimal NetValue { get =>  GrossValue * (1 - (DiscountPrecentage / 100)) ; }
    public decimal DiscountPrecentage { get; set; }
}

public enum OrderType
{
    Web, Contract, Mail, Phone
}

我该如何解决这个问题?请帮助我,感谢您的所有回答

【问题讨论】:

  • 你可以检查 与包装 if(Orders is not null) 条件吗?
  • @SyedMohammadFahimAbrar,我按照你说的进行了检查,在完成之后我的问题得到了解决,但我需要知道我的代码中的确切问题是什么??
  • 请检查答案。你会发现细节。如果合适就接受它
  • 好的,我知道了,谢谢

标签: c# blazor blazor-webassembly apexcharts


【解决方案1】:

您提供了一个空对象,该库不支持该对象。 您应该像这样初始化 Orders 变量:

private List<Order> Orders { get; set; } = new();

或将整个顶点图标签包裹在这样的 if 条件中:

@if(Orders is not null) 
{
    <ApexChart TItem="Order"
           Title="Order Net Value">
    ......
    ......
    </ApexChart>
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多