我正在尝试在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
接口来解决此问题。
在此先感谢您的帮助,建议,链接,有用的问题等等:)