#c# #blazor #syncfusion
#c# #blazor #syncfusion
Вопрос:
Итак, я пишу это приложение в razor и прямо сейчас создаю пользовательскую панель навигации. Теперь проблема в OnInitialized
событии, которое я написал:
protected async override void OnInitialized()
{
base.OnInitialized();
var user = (await AuthStat).User;
if (user.Identity.IsAuthenticated)
{
await Authenticated();
}
else
{
await NotAuthenticated();
}
}
Где функции:
protected Task Authenticated()
{
treedata = null;
treedata = new List<TreeData>();
treedata.Add(new TreeData { nodeId = "01", nodeText = "Acasa", iconCss = "icon-microchip icon" });
treedata.Add(new TreeData { nodeId = "03", nodeText = "Logout", iconCss = "icon-thumbs-up-alt icon" });
treedata.Add(new TreeData { nodeId = "04", nodeText = "Vremea", iconCss = "icon-th icon" });
treedata.Add(new TreeData { nodeId = "05", nodeText = "Profil", iconCss = "icon-code icon" });
treedata.Add(new TreeData { nodeId = "06", nodeText = "Calcul Salariu", iconCss = "icon-chrome icon" });
treedata.Add(new TreeData { nodeId = "07", nodeText = "Mijloace Fixe", iconCss = "icon-up-hand icon" });
return Task.CompletedTask;
}
protected Task NotAuthenticated()
{
treedata = null;
treedata = new List<TreeData>();
treedata.Add(new TreeData { nodeId = "01", nodeText = "Acasa", iconCss = "icon-microchip icon" });
treedata.Add(new TreeData { nodeId = "02", nodeText = "Login", iconCss = "icon-docs icon" });
treedata.Add(new TreeData { nodeId = "04", nodeText = "Vremea", iconCss = "icon-th icon" });
treedata.Add(new TreeData { nodeId = "06", nodeText = "Calcul Salariu", iconCss = "icon-chrome icon" });
return Task.CompletedTask;
}
Переменная treedata
равна:
SfTreeView<TreeData> TreeView;
public class TreeData
{
public string nodeId { get; set; }
public string nodeText { get; set; }
public string iconCss { get; set; }
public bool hasChild { get; set; }
public string pid { get; set; }
}
Моя проблема заключается в следующем: всякий раз, когда страница загружается, древовидные данные будут заполняться только при выполнении действия (т. Е. Поиска или переключения меню навигации), и я хочу показать, когда страница загружается, но я не знаю как.
Ответ №1:
//protected async override void OnInitialized()
protected override async Task OnInitializedAsync()
{
// base.OnInitialized();
// ... like before
async void
Метод не (не может быть) ожидаемым. Ваши аутентифицированные / неаутентифицированные методы не синхронизированы с рендерингом.
Комментарии:
1. Спасибо! Я не знал этого, поскольку я новичок в этой области. Кроме того, я больше изучу документацию, чтобы лучше понять это!
Ответ №2:
Мы проверили ваш прикрепленный код и выяснили, что вы использовали метод await для получения имени пользователя и источника данных TreeView. Этой функции требуется некоторое время для извлечения имени пользователя и источника данных компонента TreeView. Компонент TreeView не ожидает, пока данные не будут извлечены из этой функции, поэтому он отображается с использованием пустого источника данных. Это причина проблемы, о которой вы сообщили.
Мы уже рассматривали эту проблему как поддержку функций, которая будет реализована в компоненте TreeView. Поддержка этой функции будет включена в наш выпуск тома 3, который, как ожидается, будет выпущен в конце сентября 2020 года.
Мы ценим ваше терпение.
С уважением, Sowmiya. P
Комментарии:
1. Большое спасибо! Мне удалось заставить его функционировать, создав viewmodel и затем вызвав его на странице!