问题描述
刚刚从 Telerik 进入 Blazorise 网格。我有一个 DataGrid 工作,现在我想添加一个按钮来编辑不同页面/组件(不是内联或弹出窗口)上的记录。
我的原始起始网格标记:
<DataGrid TItem="Year" Data="@years" Sortable="true" PageSize="30" UseInternalEditing="false">
<DataGridCommandColumn TItem="Year">
<EditCommandTemplate>
<Button Color="Color.Primary" Clicked="@((e) => OnYearEdit(e))">Edit</Button>
</EditCommandTemplate>
</DataGridCommandColumn>
<DataGridColumn TItem="Year" Field="@nameof(Year.IsActive)" Caption="Active?"></DataGridColumn>
<DataGridColumn TItem="Year" Field="@nameof(Year.YearId)" Caption="ID"></DataGridColumn>
</DataGrid>
然后我希望在单击按钮时调用事件并传入 id 或 year 对象:
void OnYearEdit(int yearId)
{
NavigationManager.Navigateto("/yearedit/1");
}
没有找到任何关于这个简单用例的例子。
解决方法
Mladen 非常友好地提供了快速响应。基本上,我只需要使用 DisplayTemplate:
<DataGridColumn TItem="Year" Field="@nameof(Year.YearId)" Caption="YearId" Editable="true">
<DisplayTemplate>
<Button class="btn btn-sm btn-info" Clicked="@(()=>NavigationManager.NavigateTo($"yearedit/{context.YearId}"))">Edit</Button>
</DisplayTemplate>
</DataGridColumn>