首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂对象的Blazorise编辑

复杂对象的Blazorise编辑
EN

Stack Overflow用户
提问于 2020-09-23 02:19:56
回答 1查看 1.5K关注 0票数 1

Blazorise支持内联编辑。在我的代码中,基本编辑工作正常,但是当对象被用作父对象中的属性时,编辑不像预期的那样工作。

下面是未按预期更新的值city。缺少什么内容才能进行适当的编辑?

代码

代码语言:javascript
复制
<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>

代码科

代码语言:javascript
复制
@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
}}

模型类

代码语言:javascript
复制
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; }
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-01 20:20:54

尝试此解决方法,因为Select不支持复杂对象绑定:

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64020108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档