Hallo,
ich nutze bei meinem Projekt das Blazor 8 Quickgrid und bekomme einen Fehler, den ich nicht beheben kann. Ich habe das Testprogramm schon aufs wesenliche reduziert, aber leider kommt immer noch der Fehler:
Fehler (aktiv) CS0411 Die Typargumente der TypeInference.CreateQuickGrid_0_CaptureParameters<TGridItem>(object, out object, IQueryable<TGridItem>, out IQueryable<TGridItem>, object, out object)-Methode können nicht per Rückschluss aus der Syntax abgeleitet werden. Geben Sie die Typargumente explizit an. Hier das Programm
page "/testgrid"
@using Microsoft.AspNetCore.Components.QuickGrid
<h3>Test Grid</h3>
<QuickGrid TItem="TestItem" Items="testItems" Striped="true">
<Columns>
<Column TItem="TestItem" Property="Id" Title="ID" />
<Column TItem="TestItem" Property="Name" Title="Name" />
</Columns>
</QuickGrid>
@code {
private List<TestItem> testItems = new List<TestItem>
{
new TestItem { Id = 1, Name = "Item 1" },
new TestItem { Id = 2, Name = "Item 2" }
};
public class TestItem
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Habt Ihr vielleicht eine Idee ? Mit Google und Copilot/ChatGPT komme ich nicht weiter...
Danke Gruß Tombadil28
Hallo und willkommen,
hast du dir schon das Beispiel unter ASP.NET Core Blazor QuickGrid-Komponente angeschaut?
Bei Items
muß man eine IQueryable<T>
angeben (und List<T>
ist keine).
Hallo Th69,
vielen Dank für Deine schnelle Antwort, damit klappt es, aber dann komme ich zu meinem ursprünglichen Problem zurück:
Fehler CS0411 bei <QuickGrid Class="table" Items="matches" >
Bin neu im Blazor Thema ...
LG Tombadil28
hier das Listing:
@page "/matches/list"
@using Soccer.Model
@using Soccer.Data
@using Microsoft.EntityFrameworkCore
@using Microsoft.AspNetCore.Components.QuickGrid
@inject ApplicationDbContext appDbContext
<h3>MatchList</h3>
@if (matches != null && matches.Count > 0)
{
<QuickGrid Class="table" Items="matches" >
<PropertyColumn Property="matches => matches.MatchId" Sortable="true" />
<PropertyColumn Property="matches => matches.HomeTeam" Sortable="true" />
<PropertyColumn Property="matches => matches.AwayTeam" sortable="true" />
<PropertyColumn Property="matches => matches.Result" Sortable="true" />
<TemplateColumn Context="matches">
<a href="/match/details" )>Details</a>
</TemplateColumn>
</QuickGrid>
}
else
{
<p>Loading...</p>
}
@code {
private List<Match> matches;
protected override async Task OnInitializedAsync()
{
matches = await appDbContext.Matches
.Include(m => m.HomeTeam)
.Include(m => m.AwayTeam)
.ToListAsync();
Console.WriteLine($"Anzahl der Matches: {matches.Count}");
}
}
-----------------------------------------------------------------
//Modell Match:
using System.ComponentModel.DataAnnotations.Schema;
namespace Soccer.Model
{
public class Match
{
public int MatchId { get; set; }
public int HomeTeamId { get; set; }
public int AwayTeamId { get; set; }
public DateTime MatchDate { get; set; }
public string? Result { get; set; }
[ForeignKey("HomeTeamId")]
public Team? HomeTeam { get; set; } // FK Team
[ForeignKey("AwayTeamId")]
public Team? AwayTeam { get; set; }
public ICollection<TeamScore>? TeamScores { get; set; } // Ref Integrität
}
}
Code Tags editiert, nächstes Mal bitte selbst machen. Das is echt nicht so schwer.
Hallo tombadil28
Erstmal offtopic: Bitte verwende Code-Tags für dein Listing. Siehe auch: [Hinweis] Wie poste ich richtig?
Zum Thema:
In der Doku zum QuickGrid steht, welchen Typ Items erwartet: IQueryable<TGridItem>
. Wenn du also private IQueryable<Match> matches;
verwendest, sollte der Fehler behoben sein
Gruss
Alf