微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Blazorise Datagrid NullReferenceException

如何解决Blazorise Datagrid NullReferenceException

我将 Blazorize 与 Blazor Server(所有最新版本)与 .NET 5 一起使用。

我的问题是有一个无线电组并浏览选项时,我在特定选项上遇到 NullReferenceException 并且应用程序崩溃。

Chrome Dev Tools 的确切错误

blazor.server.js:19 [2021-04-05T01:59:44.250Z] 错误:System.NullReferenceException:未将对象引用设置为对象的实例。 在 Blazorise.DataGrid.DataGrid1.FilterData() at Blazorise.DataGrid.DataGrid1 个查询) 在 Blazorise.DataGrid.DataGrid<DataGrid TItem="InnerElement" EditMode="DataGridEditMode.Popup" RowUpdated="(update) => OnRowUpdated()" Data="element.Elements" Editable="true" ShowPager="true"> <DataGridColumn TItem="InnerElement" Editable="true" Caption="@Localizer.Text("name")" Field="@nameof(InnerElement.Alias2)"></DataGridColumn> @if (element.IsRanged) { <DataGridColumn TItem="InnerElement" Editable="true" Caption="@Localizer.Text("min_value")" Field="@nameof(InnerElement.MinValue)" /> <DataGridColumn TItem="InnerElement" Editable="true" Caption="@Localizer.Text("max_value")" Field="@nameof(InnerElement.MaxValue)" /> } else { @if (element.Elements[0].Value != null) { <DataGridColumn TItem="InnerElement" Caption="@Localizer.Text("value")" Field="@nameof(InnerElement.Value)" Editable="false" /> } } 1.FilterViewData() 在 Blazorise.DataGrid.DataGrid`1.b__436_5(RenderTreeBuilder __builder4) 在 Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(Int32 序列,RenderFragment 片段) 在 Blazorise.TableBody.buildrenderTree(RenderTreeBuilder __builder) 在 Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder,RenderFragment renderFragment) 在 Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry) 在 Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

在我最内部的组件代码中,我有这样的东西

 <RadioGroup Inline="true" TValue="ElementContext" CheckedValue="PatternContext" CheckedValueChanged="ChangeContext">
        <Radio Value="ElementContext.DEFAULT" TValue="ElementContext">@Localizer.Text("elementcontext_default")</Radio>
        <Radio Value="ElementContext.CATEGORY" TValue="ElementContext">@Localizer.Text("elementcontext_category")</Radio>
        <Radio Value="ElementContext.RANGE" TValue="ElementContext">@Localizer.Text("elementcontext_range")</Radio>
</RadioGroup>

上面提取代码的组件的容器有这个

 private void ChangeContext(ElementContext context)
{
    if (context == ElementContext.DEFAULT)
    {
        Elements[0].Elements = new List<InnerElement>() {
            new InnerElement()
            {
                Alias = "Default",Alias2 = "",Abstract = Default
            }
        };
    }
    else
    {
        Elements[0].Name = string.Empty;
        Elements[0].IsContinuous = context == ElementContext.VALUE;
        Elements[0].IsRanged = context == ElementContext.RANGE;
        Elements[0].Elements = new List<InnerElement>();
    }

    PatternContext = context;
    StateHasChanged();
}

和ChangeContext

{{1}}

在组件的第一个提取物中有if语句有问题吗? 有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。