Razor/Syncfusion:在异步页面加载时,除非我采取行动,否则不会填充树数据
Razor/Syncfusion: On async page loading, treedata won't populate unless I make an action
所以我正在用 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; }
}
我的问题如下:每当页面加载时,树数据只会在发生操作(即搜索或切换导航菜单)时填充,我想在页面加载时显示,但我没有知道怎么做。
//protected async override void OnInitialized()
protected override async Task OnInitializedAsync()
{
// base.OnInitialized();
// ... like before
async void
方法没有(不能)等待。您的 Authenticated/NotAuthenticated 方法 运行 与渲染不同步。
我们检查了您附加的代码,发现您使用 await 方法获取用户名和 TreeView 数据源。此函数需要一些时间来获取 TreeView 组件的用户名和数据源。 TreeView 组件不会等到从该函数获取数据,所以它使用空数据源呈现。这就是您报告的问题的原因。
我们已经考虑将此问题作为功能支持在 TreeView 组件中实现。我们的 第 3 卷版本 将包含对此功能的支持,预计将于 2020 年 9 月末推出。
感谢您的耐心等待。
此致,
索米亚。 P
所以我正在用 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; }
}
我的问题如下:每当页面加载时,树数据只会在发生操作(即搜索或切换导航菜单)时填充,我想在页面加载时显示,但我没有知道怎么做。
//protected async override void OnInitialized()
protected override async Task OnInitializedAsync()
{
// base.OnInitialized();
// ... like before
async void
方法没有(不能)等待。您的 Authenticated/NotAuthenticated 方法 运行 与渲染不同步。
我们检查了您附加的代码,发现您使用 await 方法获取用户名和 TreeView 数据源。此函数需要一些时间来获取 TreeView 组件的用户名和数据源。 TreeView 组件不会等到从该函数获取数据,所以它使用空数据源呈现。这就是您报告的问题的原因。
我们已经考虑将此问题作为功能支持在 TreeView 组件中实现。我们的 第 3 卷版本 将包含对此功能的支持,预计将于 2020 年 9 月末推出。
感谢您的耐心等待。
此致, 索米亚。 P