《Blazor》的teleerik UI免费下载30天试用版

ListView -刷新数据

使用ObservableCollection最常见的原因是让组件(如网格、树视图、树列表、下拉列表)在你改变集合时发生变化或做出反应。

当你想这样刷新组件数据源时,有两个重要的框架行为需要注意——当ObservableCollection实例触发事件时,以及当组件不是一个可观察集合时,如何刷新组件的数据。

在本文中:

重新绑定的方法

要刷新列表视图使用数据OnRead,打电话给重新绑定方法TelerikListView参考。这将触发OnRead事件并在处理程序中执行业务逻辑。

@*点击重新绑定按钮将从ListView中删除第一项并刷新数据*@ @ @使用Telerik.DataSource.Extensions 

按下重新绑定将从ListView中删除第一项并重新绑定它。

重新绑定
@code {private List SourceData {get;设置;} private TelerikListView ListViewRef {get;设置;} void ReadItems(listviewreaddeventargs args) {if (SourceData == null) {SourceData = Enumerable。Range(1,5).Select(x => new SampleData {Id = x, Name = $"Name {x}", Team = $"Team {x}"}).ToList();} var datasourceResult = SourceData.ToDataSourceResult(args.Request);arg游戏。数据= datasourceResult.Data; args.Total = datasourceResult.Total; } void RebindListView() { if (SourceData.Count > 0) { SourceData.RemoveAt(0); } ListViewRef.Rebind(); } public class SampleData { public int Id { get; set; } public string Name { get; set; } public string Team { get; set; } } } @* Styles would usually go to to the site stylesheet *@

作为我们3.0.1版本中我们引入了重新绑定方法到组件引用。这将使本文中的其他方法过时。

可观测的数据

数据绑定组件可以从实时数据中获益——当数据源集合发生更改时,组件应该进行更新以反映该更改。Blazor套件的Telerik UI中的大多数数据绑定组件都实现了这样的功能。

数据的集合,该集合实现INotifyCollectionChanged接口(例如ObservableCollection), Telerik组件订阅其CollectionChanged要更新的事件。这意味着添加项、删除项或清除集合更新组件(其)阀门().Remove ().Clear ()方法)。

Observable集合会触发CollectionChanged事件发生时,添加删除清晰的方法被调用。当您更改其中一个元素的字段值时,它们不会触发它。

将ListView绑定到ObservableCollection上,这样它就可以对集合的变化做出反应。

@*添加/删除员工,看看ListView对这个变化的反应。*@ @ @using System.Collections.ObjectModel 添加员工 删除员工   

员工列表

@code{void AddEmployee() {var x = ListViewData。计数+ 1;ListViewData。添加(new SampleData { Id = x, Name = $"Name {x}", Team = $"Team {x % 3}" }); } void RemoveEmployee() { if (ListViewData.Count > 0) { ListViewData.RemoveAt(ListViewData.Count - 1); } } ObservableCollection ListViewData { get; set; } = new ObservableCollection(Enumerable.Range(1, 5).Select(x => new SampleData { Id = x, Name = $"Name {x}", Team = $"Team {x % 3}" })); public class SampleData { public int Id { get; set; } public string Name { get; set; } public string Team { get; set; } } } @* Styles would usually go to to the site stylesheet *@

如果需要向集合中添加/从集合中删除许多项,请考虑创建一个新集合并提供其对data参数的引用。因此,组件将只重新呈现一次(当数据收集引用被更改时),而不是为了响应Add/Remove事件而多次重新呈现。

新馆藏参考

在Blazor中,框架将触发OnParametersSet事件(这是子组件如何对外部更改做出反应),只有当它能够检测到通过相应参数(如数据查看Telerik组件的数据源)。这种检测的工作原理如下:

  • 对于基本类型(如数字、字符串),当它们的值发生变化时就会发生这种情况。

  • 对于复杂类型(如数据集合,如列表,或任何IEnumerable(以及特定于应用程序的模型/对象),当对象引用发生更改时就会发生这种情况。

    因此,您通常需要创建视图模型字段的引用(例如TreeViewData = new List< mytreeviewem >(theUpdatedDataCollection);),当你想要更新组件时。

创建新的集合引用以刷新ListView数据。

@*添加/删除员工或更改集合,看看ListView对该更改的反应。*@ 添加员工 删除员工 更改员工数据   

员工列表

@code{void AddEmployee() {var x = ListViewData。计数+ 1;ListViewData。添加(new SampleData { Id = x, Name = $"Name {x}", Team = $"Team {x % 3}" }); ListViewData = new List(ListViewData); } void RemoveEmployee() { if (ListViewData.Count > 0) { ListViewData.RemoveAt(ListViewData.Count - 1); ListViewData = new List(ListViewData); } } void ChangeData() { var newData = Enumerable.Range(6, 5).Select(x => new SampleData { Id = x, Name = $"Name {x}", Team = $"Team {x % 3}" }).ToList(); ListViewData = new List(newData); } List ListViewData { get; set; } = Enumerable.Range(1, 5).Select(x => new SampleData { Id = x, Name = $"Name {x}", Team = $"Team {x % 3}" }).ToList(); public class SampleData { public int Id { get; set; } public string Name { get; set; } public string Team { get; set; } } } @* Styles would usually go to to the site stylesheet *@

另请参阅

在本文中
Baidu
map