Search code examples
c#listgridviewblazorsyncfusion

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


I'm trying to display a created object of class "FleetDataOverview" into an gridview but it keeps saying "object is not set to an instance of an object", code:

Gridview code:

<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; }
}

What am I doing wrong here?

Thanks in advance


Solution

  • This line of code: public List<FleetDataOverview> GridData { get; set; }

    Should be :

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

    Defining a List<FleetDataOverview> property still requires you to instantiate the object. Otherwise, the value returns from the get accessor is null.

    Hope this helps...