Bootstrap Blazor新增时带入选择的行内容

发布时间 2023-04-10 20:01:31作者: 微风吹过~

1.需求

  如上图所示,字典表中字典类型和字典类型描述是重复的,新建时需要重复录入很不方便,所以需要从新增时从选中行带入到新建的文本框中。

2.方案

  1.使用@bind-SelectedRows绑定选中行对象,开发中DictionaryDto替换为实际实体。

<Table TItem="DictionaryDto" PageItemsSource="@PageItemsSource" AutoGenerateColumns="true"
       IsPagination="true" IsStriped="true" IsBordered="true" IsMultipleSelect="true"
       ShowToolbar="true" ShowExtendButtons="true" ShowLoading="true" ShowSearch="true" 
       OnAddAsync="@OnAddAsync" OnEditAsync="@OnEditAsync" OnSaveAsync="@OnSaveAsync" OnDeleteAsync="@OnDeleteAsync" @bind-SelectedRows="MySelectedItems"
       OnQueryAsync="@OnQueryAsync" ShowExportButton="true">
    <TableColumns>

    </TableColumns>
</Table>

  2.创建SelectedDictionary 对象和 MySelectedItems 对象 使用 set 访问器给对象赋值。

  //选中对象
  private List<DictionaryDto>? SelectedDictionary { get; set; } = new List<DictionaryDto>();
  //选中的第一行值
  private DictionaryDto CurrentDic { get; set; } = new DictionaryDto();
    
    private List<DictionaryDto>? MySelectedItems
    {
        get { return SelectedDictionary; }
        set
        {
            SelectedDictionary = value;
            if(value.Count > 0)
            {
                CurrentDic.DictionaryType = value[0].DictionaryType;
                CurrentDic.DictionaryTypeName = value[0].DictionaryTypeName;
            }
           
        }

  3.在OnAddAsync方法中返回字典对象,将set访问器赋值的对象带入新建页面。

    private async Task<DictionaryDto> OnAddAsync()
    {
        return CurrentDic;
    }