![](/img/trans.png)
[英]Object reference not set to an instance of an object. Please Help to solve error
[英]how can i solve 'Object reference not set to an instance of an object.' in blazor?
我放弃解决这个问题。 我不知道我的代码有什么问题,如果问题是 object 的实例,我试图给我的分页 class 一个实例,但仍然没有线索。
这是我的索引 class;
<DataGridComponent TItem="Employee"
DataItems="listEmployee"
Columns="columnDefinitions"
Paging="@(new PagingConfig {
Enabled = true,
CustomPager = true,
PageSize = 3
})">
<CustomPager>
<button class="btn btn-primary" @onclick="PrevPage"> Prev </button>
<span> Page
<input type="number" min="1"@bind-value="@DataGrid.currentPageNumber"/>
of @DataGrid.MaxPageNumber </span>
<button class="btn btn-primary" @onclick="NextPage"> Next </button>
</CustomPager>
</DataGridComponent>
@code{
private DataGridComponent<Employee> DataGrid;
private List<Employee> listEmployee;
private List<ColumnDefinition> columnDefinitions;
protected override void OnInitialized()
{
base.OnInitialized();
Initialize();
}
private void PrevPage()
{
DataGrid.GoToPrevPage();
}
private void NextPage()
{
DataGrid.GoToNextPage();
}
这是我的数据网格 class
<div class="level">
<div class="level-left"></div>
<div class="level-right">
<div class="level-item">
@if (Paging != null && Paging.Enabled)
{
@if (Paging.CustomPager)
{
@CustomPager
}
else
{
<span @onclick="GoToPrevPage"><b><</b>Prev</span>
<span> @currentPageNumber of @Paging.MaxPageNumber(DataItems.Count)
</span>
<span @onclick="GoToNextPage"><b>Next></b></span>
}
}
</div>
</div>
</div>
@code {
[Parameter]
public int currentPageNumber { get; set; } = 1;
[Parameter]
public List<TItem> DataItems { get; set; }
[Parameter]
public List<ColumnDefinition> Columns { get; set; }
[Parameter]
public PagingConfig Paging { get; set; } = new PagingConfig();
[Parameter]
public RenderFragment CustomPager { get; set; }
public void GoToPrevPage()
{
currentPageNumber = Paging.PrevPageNumber(currentPageNumber);
}
public void GoToNextPage()
{
currentPageNumber = Paging.NextPageNumber(currentPageNumber, DataItems.Count);
}
public int MaxPageNumber { get => Paging.MaxPageNumber(DataItems.Count); }
}
这是我的分页配置
public class PagingConfig
{
public bool Enabled { get; set; }
public int PageSize { get; set; }
public bool CustomPager { get; set; }
public int NumOfItemsToSkip(int pageNumber)
{
if (Enabled)
{
return (pageNumber - 1) * PageSize;
}
else
return 0;
}
public int NumOfItemsToTake(int totalItemCount)
{
if (Enabled)
{
return PageSize;
}
return totalItemCount;
}
public int PrevPageNumber(int currentPageNumber)
{
if (currentPageNumber > 1)
return currentPageNumber - 1;
else
return 1;
}
public int NextPageNumber(int currentPageNumber, int totalItemsCount)
{
if (currentPageNumber < MaxPageNumber(totalItemsCount))
{
return currentPageNumber + 1;
}
else
{
return currentPageNumber;
}
}
public int MaxPageNumber(int totalItemcount)
{
int maxPageNumber;
double numberOfPage = (double)totalItemcount / (double)PageSize;
if (numberOfPage == Math.Floor(numberOfPage))
{
maxPageNumber = (int)numberOfPage;
}
else
{
maxPageNumber = (int)numberOfPage + 1;
}
return maxPageNumber;
}
}
}
问题是,当我尝试将启用设置为 true 时,分页配置应该从索引中获取 true 的值。 但据说还没有设置实例 object。 我试图将新的分页实例放入网格组件但仍然没有线索:(
需要分配 DataGrid。 我想你想要这个:
<DataGridComponent @ref="DataGrid" TItem="Employee" ...>
...
</DataGridComponent>
引用是对这一行中的变量:
private DataGridComponent<Employee> DataGrid;
只是 DataGridComponent 的标记中缺少 @ref="DataGrid"。 因此,您的私有 DataGrid 变量是 null。
在 Index.razor 中,您在 Razor 中设置了一个DataGridComponent
实例,然后在代码部分private DataGridComponent<Employee> DataGrid
中声明另一个实例。 这是两个未链接的DataGridComponent
实例。 要将DataGrid
引用到您的 razor 声明版本,您需要使用@ref
,如下所示。
<DataGridComponent TItem="Employee"
DataItems="listEmployee"
Columns="columnDefinitions"
@ref = "this.DataGrid"
Paging="@(new PagingConfig {
Enabled = true,
CustomPager = true,
PageSize = 3
})">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.