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; } else { CurrentDic.DictionaryType = ""; CurrentDic.DictionaryTypeName = ""; } } }
3.在OnAddAsync方法中返回字典对象,将set访问器赋值的对象带入新建页面。
private async Task<DictionaryDto> OnAddAsync() { return CurrentDic; }