我有一个简单的方法SortClass(column),当用户点击图标时更改css类,我检查了该方法,它工作正常,但blazor在分配类的值后不重新生成SVG。
<th @onclick="@(() => SortData(col))" scope="col">
@col.Caption
<i class="@SortClass(col)"></i>
</th>SortClass:
private string SortClass(ColumnDefinition col)
{
if (col._SortDirection != SortDirection.NotSet)
{
return $"{col._SortDirection.ToString().ToLower()}"; // SortDirection is enum has value {"fas fa-sort-up", "fas fa-sort-down"}
}
return "invisible";
}Onclick方法:
private void SortData(ColumnDefinition sortByCol = null)
{
if (sortByCol is null)
{
sortByCol = Columns.FirstOrDefault(x => x._SortDirection != SortDirection.NotSet);
if (sortByCol is null) return;
}
if (sortByCol._SortDirection != SortDirection.NotSet)
{
switch (sortByCol._SortDirection)
{
case SortDirection.NotSet:
sortByCol._SortDirection = SortDirection.Asc;
break;
case SortDirection.Asc:
sortByCol._SortDirection = SortDirection.Desc;
break;
case SortDirection.Desc:
sortByCol._SortDirection = SortDirection.Asc;
break;
default:
sortByCol._SortDirection = SortDirection.Asc;
break;
}
if (sortByCol._SortDirection == SortDirection.Asc)
{
DataItems.Sort((x, y) => typeof(TItem).GetProperty(sortByCol.DataField).GetValue(x).ToString()
.CompareTo(typeof(TItem).GetProperty(sortByCol.DataField).GetValue(y).ToString()));
}
else
{
DataItems.Sort((x, y) => typeof(TItem).GetProperty(sortByCol.DataField).GetValue(y).ToString()
.CompareTo(typeof(TItem).GetProperty(sortByCol.DataField).GetValue(x).ToString()));
}
}
}发布于 2021-02-19 15:54:07
我认为您的组件没有意识到您想要进行的更改,因为图标类没有绑定到类属性,以及在预定义的生命周期方法(如OnInitialized等)中是否进行了更改。因此,要么将图标类绑定到在执行排序时更改的属性,要么显式地传达要使用StateHasChanged()-method呈现的更改。
https://stackoverflow.com/questions/66242580
复制相似问题