[英]Show DetailRow on RowDoubleClicked Blazorise DataGrid
[英]Blazorise Datagrid inline edit for complex object
我正在使用Blazorise Datagrid 。 這個擴展也支持內聯編輯。 當編輯一個簡單的對象時,內聯編輯工作得很好。 但是當我在父對象中使用對象作為屬性時,更新過程無法按預期工作。 當我更改城市時,值未更新。 有什么我錯過了嗎? 提前致謝
這是我的代碼
<section class="section">
<div class="container">
<DataGrid Data="forecasts" TItem="WeatherForecast" EditMode="Blazorise.DataGrid.DataGridEditMode.Inline">
<DataGridCommandColumn TItem="WeatherForecast" CellsEditableOnEditCommand="true"></DataGridCommandColumn>
<DataGridDateColumn TItem="WeatherForecast" Field="@nameof(WeatherForecast.Date)" Caption="Date" Editable="true"></DataGridDateColumn>
<DataGridDateColumn TItem="WeatherForecast" Field="@nameof(WeatherForecast.Temperature)" Caption="Temperature" Editable="true"></DataGridDateColumn>
<DataGridSelectColumn TItem="WeatherForecast" Field="@nameof(WeatherForecast.City)" Caption="City" Editable="true">
<DisplayTemplate>
@{
var name = (context as WeatherForecast).City?.Name;
@name
}
</DisplayTemplate>
<EditTemplate>
@{
<Select TValue="City" SelectedValue="@((City)(((CellEditContext)context).CellValue))" SelectedValueChanged="@( v => ((CellEditContext)context).CellValue = v)">
@foreach (var item in Cities)
{
<SelectItem TValue="City" Value="@(item)">@item.Name</SelectItem>
}
</Select>
}
</EditTemplate>
</DataGridSelectColumn>
</DataGrid>
</div>
@code {
private List<WeatherForecast> forecasts;
private List<City> Cities;
protected override async Task OnInitializedAsync()
{
forecasts = await ForecastService.GetForecastAsync(DateTime.Now); // get list of forecast
Cities = await ForecastService.GetCityListAsync(); // get list of cities
}}
模型類
public class WeatherForecast
{
public int Id { get; set; }
public DateTime Date { get; set; }
public int Temperature { get; set; }
public City City { get; set; }
}
public class City
{
public int Id { get; set; }
public string Name { get; set; }
}
嘗試此解決方法,因為 Select 組件不支持復雜對象綁定:
<EditTemplate>
<Select
TValue="int"
SelectedValue="@((int)((City)(((CellEditContext)context).CellValue)).Id)"
SelectedValueChanged="@( v => ((CellEditContext)context).CellValue = Cities.First(x=> x.Id == v))">
@foreach (var item in Cities)
{
<SelectItem TValue="int" Value="@(item.Id)">@item.Name</SelectItem>
}
</Select>
</EditTemplate>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.