Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Blazor: @onclick event handler not triggering SortData() for table column sorting

$
0
0

Question:I'm working on a Blazor application where I need to implement sorting functionality for a table of vehicle data. The table displays vehicle information (Make, Model, Color, Year), and each column header should be clickable to sort the data. However, when I click on the column headers, the SortData() method is not being triggered, and the sorting doesn't work.

I already tried, Chatgpt, Gemini, Copilot but nothing no solution

VechileData.razor (Child Class)

@using Microsoft.EntityFrameworkCore@using CarTracker.Models@using CarTracker.Data@inject ILogger<VehicleData> Logger@inject CarTrackerDbContext CarDbContext<h1>Vehicle Data Grid</h1>@if (vehicles == null){<p><em>Loading...</em></p>}else if (!vehicles.Any()){<p><em>No vehicles found.</em></p>}else{<table class="table"><thead><tr><th @onclick="() => SortData(nameof(VehicleInformationModel.Make))" style="cursor:pointer;">                    Make @GetSortIcon(nameof(VehicleInformationModel.Make))</th><th @onclick="() => SortData(nameof(VehicleInformationModel.Model))" style="cursor:pointer;">                    Model @GetSortIcon(nameof(VehicleInformationModel.Model))</th><th @onclick="() => SortData(nameof(VehicleInformationModel.Color))" style="cursor:pointer;">                    Color @GetSortIcon(nameof(VehicleInformationModel.Color))</th><th @onclick="() => SortData(nameof(VehicleInformationModel.Year))" style="cursor:pointer;">                    Year @GetSortIcon(nameof(VehicleInformationModel.Year))</th></tr></thead><tbody>            @foreach (var vehicle in vehicles)            {<tr><td>@vehicle.Make</td><td>@vehicle.Model</td><td>@vehicle.Color</td><td>@vehicle.Year</td></tr>            }</tbody></table>}@code {    private List<VehicleInformationModel>? vehicles;    private string sortColumn = nameof(VehicleInformationModel.Make);    private bool sortAscending = true;    protected override async Task OnInitializedAsync()    {        try        {            vehicles = await CarDbContext.VehicleInformationDBSet.ToListAsync();            SortData(sortColumn); // Sort initially        }        catch (Exception ex)        {            Logger.LogError($"Error fetching vehicle data: {ex.Message}");        }    }    private void SortData(string column)    {        Logger.LogInformation($"Sorting by column: {column}, ascending: {sortAscending}");        if (sortColumn == column)        {            sortAscending = !sortAscending;        }        else        {            sortColumn = column;            sortAscending = true;        }        List<VehicleInformationModel> sortedVehicles;        switch (sortColumn)        {            case nameof(VehicleInformationModel.Make):                sortedVehicles = sortAscending                    ? vehicles.OrderBy(v => v.Make).ToList()                    : vehicles.OrderByDescending(v => v.Make).ToList();                break;            case nameof(VehicleInformationModel.Model):                sortedVehicles = sortAscending                    ? vehicles.OrderBy(v => v.Model).ToList()                    : vehicles.OrderByDescending(v => v.Model).ToList();                break;            case nameof(VehicleInformationModel.Color):                sortedVehicles = sortAscending                    ? vehicles.OrderBy(v => v.Color).ToList()                    : vehicles.OrderByDescending(v => v.Color).ToList();                break;            case nameof(VehicleInformationModel.Year):                sortedVehicles = sortAscending                    ? vehicles.OrderBy(v => v.Year).ToList()                    : vehicles.OrderByDescending(v => v.Year).ToList();                break;            default:                sortedVehicles = vehicles;                break;        }        vehicles = sortedVehicles;        StateHasChanged();    }    private string GetSortIcon(string column)    {        if (sortColumn != column) return string.Empty;        return sortAscending ? "↑" : "↓";    }}

Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>