Я пытаюсь сгенерировать динамический TelerikGrid
в server-side
Blazor
проекте. То, что я пытаюсь реализовать, - это создать SplitView, который имеет сетку Telerik с левой стороны и DetailsView (onSelect) с правой стороны. (Я уже реализовал ту же идею в Telerik.MVC)
Как я понял, TelerikGrid нужна конкретная модель типа для создания Grid. Поэтому мой вопрос заключается в том, есть ли способ или, возможно, какой-то трюк для реализации той же идеи на Telerik.Blazor.Grid
Это модель:
public class SplitView<IData>
{
public IEnumerable<IData> Data { get; set; }
public int Height { get; set; }
public int PageSize { get; set; }
public int RowHeight { get; set; }
public bool Sortable { get; set; } = false;
public GridScrollMode GridScrollMode { get; set; }
public GridFilterMode GridFilterMode { get; set; }
public GridSelectionMode GridSelectionMode { get; set; }
public List<SplitViewLeftListItem> GridColumns { get; set; }
public List<string> Classes { get; set; } = new List<string>();
}
public class SplitViewLeftListItem
{
public string Title { get; set; }
public int Width { get; set; }
public string Field { get; set; }
public bool Groupable { get; set; } = false;
}
public class SplitViewRight
{
public string Header { get; set; }
public string Content { get; set; }
}
страница сеткивот так:
@if (GridDataset != null)
{
<div class="left-content">
<TelerikGrid Data="@GridDataset.Data" ScrollMode="@GridScrollMode.Virtual"
Height="@(GridDataset.Height == 0 ? "" : $"{GridDataset.Height}px")" RowHeight="40" PageSize="50" SelectionMode="@GridSelectionMode.Single"
Sortable="true" FilterMode="@GridFilterMode.FilterMenu"
SelectedItemsChanged="@((IEnumerable<UserData> objectList) => OnSelect(objectList))">
<GridColumns>
@foreach (var item in GridDataset.GridColumns)
{
<GridColumn Title="@item.Title" Field="@item.Field" Width="@(item.Width == 0 ? "" : $"{item.Width}")" Groupable="@item.Groupable" />
}
</GridColumns>
</TelerikGrid>
</div>
}
else
{
<p>Loading...</p>
}
и внутри блока @code
я должен передать конкретную модель SplitView<a concrete model>
примерно так:
@code{
private SplitView<UserData> GridDataset { get; set; }
}
Итак, есть лиспособ передачи динамического типа в Telerik.Grid, чтобы я мог использовать интерфейс IData
для решения этой проблемы.
Заранее благодарю за любую помощь, предложение, ссылку, полезный вопрос и так далее :)