Передача динамического DataType для создания Telerik Blazor Grid (.Net Core) - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь сгенерировать динамический 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 для решения этой проблемы.

Заранее благодарю за любую помощь, предложение, ссылку, полезный вопрос и так далее :)

...