为什么我不能使用 Syncfusion Blazor 在我的 gridview 中显示这个对象?

Why cant I display this object in my gridview using Syncfusion Blazor?

我正在尝试将 class "FleetDataOverview" 的创建对象显示到 gridview 中,但它一直显示 "object is not set to an instance of an object",代码:

网格视图代码:

<SfCard ID="">
            <CardHeader Title="Fleet data (24 hours)" />
            <CardContent>
                <SfGrid DataSource="@GridData" AllowPaging="true">
                    <GridColumns>
                        <GridColumn Field=@nameof(FleetDataOverview.FleetId) HeaderText="ID" TextAlign="TextAlign.Right" Width="120"></GridColumn>
                        <GridColumn Field=@nameof(FleetDataOverview.FleetAverageEEOI) HeaderText=" Average EEOI (CO2 / (cardo * distance sailed))" TextAlign="TextAlign.Right" Width="120"></GridColumn>
                        <GridColumn Field=@nameof(FleetDataOverview.FleetAverageFOC) HeaderText=" Average FOC (kg/nm)" TextAlign="TextAlign.Right" Width="120"></GridColumn>
                        <GridColumn Field=@nameof(FleetDataOverview.FleetTotalFuelMass) HeaderText=" Total Fuel Mass (kg)" TextAlign="TextAlign.Right" Width="120"></GridColumn>
                        <GridColumn Field=@nameof(FleetDataOverview.FleetAverageSpeed) HeaderText=" Average speed (kn)" TextAlign="TextAlign.Right" Width="120"></GridColumn>
                        <GridColumn Field=@nameof(FleetDataOverview.FleetTotalDistanceSailed) HeaderText=" Total distance sailed (NM)" TextAlign="TextAlign.Right" Width="120"></GridColumn>
                    </GridColumns>
                </SfGrid>
            </CardContent>
</SfCard>

C#:

public List<FleetDataOverview> GridData { get; set; }

protected override void OnInitialized()
{
    FleetDataOverview averageFleetDataOverView = new FleetDataOverview();
    averageFleetDataOverView.FleetId = "1";
    averageFleetDataOverView.FleetAverageEEOI = "100";
    averageFleetDataOverView.FleetAverageFOC = "200";
    averageFleetDataOverView.FleetTotalFuelMass = "1200";
    averageFleetDataOverView.FleetAverageSpeed = "14";
    averageFleetDataOverView.FleetTotalDistanceSailed = "16000";
    GridData.Add(averageFleetDataOverView);
}

public class FleetDataOverview
{
    public string FleetId { get; set; }
    public string FleetAverageEEOI { get; set; }
    public string FleetAverageFOC { get; set; }
    public string FleetTotalFuelMass { get; set; }
    public string FleetAverageSpeed { get; set; }
    public string FleetTotalDistanceSailed { get; set; }
}

我做错了什么?

提前致谢

这行代码:public List<FleetDataOverview> GridData { get; set; }

应该是:

 public List<FleetDataOverview> GridData { get; set; } = new List<FleetDataOverview>();

定义一个 List<FleetDataOverview> 属性 仍然需要您实例化该对象。否则,get 访问器的值 returns 为空。

希望这对您有所帮助...

由于您试图将对象添加到值为 null 的列表 (GridData)(未启动),因此出现了所报告的问题。为了克服报告的问题,请按如下方式初始化 GridData

public List<FleetDataOverview> GridData { get; set; } = new List<FleetDataOverview>();