如何用我的数据填充C#Radzen下拉列表



所以我要做的是查询一个成功返回数据的API。我想让用户按类别过滤他们看到的数据。这是C#代码

@code {
private Root alldata;
IEnumerable<Entry> apis;

protected override async Task OnInitializedAsync()
{
try
{
alldata = await Http.GetFromJsonAsync<Root>("https://api.publicapis.org/entries");
Console.WriteLine(alldata.count);
apis = alldata.entries;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public class Entry
{
public string API { get; set; }
public string Description { get; set; }
public string Auth { get; set; }
public bool HTTPS { get; set; }
public string Cors { get; set; }
public string Link { get; set; }
public string Category { get; set; }
}
public class Root
{
public int count { get; set; }
public List<Entry> entries { get; set; }
}
void OnChange(object value, string name)
{
var str = value is IEnumerable<object> ? string.Join(", ", (IEnumerable<object>)value) : value;
Console.WriteLine($"{name} value changed to {str}");
}

当我尝试使用Radzen组件来显示Categories时,它仍然是空的。这是我尝试使用的Radzen组件:

<div class="col-lg-4 sticky-top">
<h3>Categories</h3>
<RadzenDropDown AllowClear="true" TValue="string" Style="width:300px"
Data=@(apis.Select(a => a.Category).Distinct())
Change=@(args => OnChange(args, "DropDown")) />
</div>

我将如何使用API本身返回的API的类别填充此下拉列表?然后只显示类别匹配的数据?

请记住,OnChange()函数是我直接从Radzen文档中复制的,我不能100%确定它的用途。

我试图使用的Radzen下拉列表的文档可以在这里找到:https://blazor.radzen.com/dropdown

谢谢!:(

我意识到这个答案来得很晚,但希望有人觉得它很有价值。

我建议重写你的";OnChange";类到";OnApiChanged";,当用户更改所选API条目:时,它将进行处理

void OnApiEntryChanged(Entry value)
{
if (value == null)
{
Console.WriteLine($"Entry was cleared");
}
else
{
Console.WriteLine($"Entry selected: {value.API} - {value.Description}");
}
}

然后,您可以将RadzenDropDown组件更改为如下所示:

<RadzenDropDown AllowClear="true" TValue="Entry" Style="width:300px"
Data=@apis Change=@((arg) => OnApiEntryChanged((Entry)arg)) />

最新更新