Data Grid
Use the datagrid to connect to any data source and add sorting and paging. The grid menu can add any content to include feature such as filtering as well.
Getting Started
Hook into the DataLoaded event callback to load up your data. The event include the data such as the current page and page size so
you can filter the returned data.
<DataGrid @ref="PeopleDataGrid" Items="People" TItem="Person" DataLoaded="OnDataLoad" Title="Customers" RowClicked="OnRowClicked">
<GridMenu>
<button class="btn btn-primary" @onclick="New"><i class="fi fi-add"></i> New</button>
</GridMenu>
<GridColumns>
<GridColumn TItem="Person" Field="(x => x.Id)" IsDefaultSortColumn="true" InitialSort="desc"></GridColumn>
<GridColumn TItem="Person" Field="(x => x.Name)"></GridColumn>
<GridColumn TItem="Person" Field="(x => x.Company)"></GridColumn>
<GridColumn TItem="Person" Field="(x => x.Title)" IsVisible="false"></GridColumn>
<GridColumn TItem="Person" Field="(x => x.Birthday)" Title="DOB"></GridColumn>
<GridColumn TItem="Person" Field="(x => x.Email)"></GridColumn>
<GridColumn TItem="Person" Field="(x => x.IsDeleted)" Title="Disabled"></GridColumn>
<GridPager TItem="Person"></GridPager>
</GridColumns>
</DataGrid>
@code {
private DataGrid<Person> PeopleDataGrid { get; set; }
private IEnumerable<Person> People { get; set; }
private List<Person> PeopleData { get; set; }
protected override Task OnInitializedAsync()
{
PeopleData = SampleData.GetPeople().ToList();
return base.OnInitializedAsync();
}
private async Task OnDataLoad(DataGrid<Person> e)
{
People = PeopleData.Skip(e.PageSize * e.CurrentPage).Take(e.PageSize).OrderBy(x => e.SortedColumn.Field);
e.TotalItems = PeopleData.Count();
StateHasChanged();
}
private async Task OnRowClicked(Person item)
{
}
}
Result
Customers
Id | Name | Company | DOB | Email | Disabled |
|---|
Items 1 - 0 of 0