diff --git a/_contentTemplates/common/dropdowns-virtualization.md b/_contentTemplates/common/dropdowns-virtualization.md index c195f2fb64..1fd0d33ea7 100644 --- a/_contentTemplates/common/dropdowns-virtualization.md +++ b/_contentTemplates/common/dropdowns-virtualization.md @@ -33,7 +33,7 @@ the component will call this method to request the model that matches the `Value #limitations * When the initially selected item/items are on a page different than the first one, opening the dropdown list will NOT scroll the list to the selected item. -* When virtualization is enabled, the component calculates the position of the items. In this case, the loading indicators are not displayed as they would affect the proper item positioning. This limitation will be removed in a future version of UI for Blazor. +* When virtualization is enabled, the component calculates the position of the items. In this case, the loading indicators are not displayed as they would affect the proper item positioning. #end #remote-data-sample-intro diff --git a/_contentTemplates/treelist/state.md b/_contentTemplates/treelist/state.md index f9c4f08fc2..b1f599f180 100644 --- a/_contentTemplates/treelist/state.md +++ b/_contentTemplates/treelist/state.md @@ -554,9 +554,7 @@ #get-column-state-from-code -@* Click the button, reorder some columns, maybe lock one of them, hide another, and click the button again to see how the state changes but the order of the columns in the state collection remains the same. This example also shows a workaround for getting the Field of the column that will be availale in a future release as part of the column state. *@ - -@using Telerik.DataSource; +@* Click the button, reorder some columns, maybe lock one of them, hide another, and click the button again to see how the state changes but the order of the columns in the state collection remains the same. *@ Get the state of the Columns @@ -580,64 +578,36 @@ @code { - public TelerikTreeList TreeListRef { get; set; } = new TelerikTreeList(); - - //part of workaround for getting the field too - public List ColumnFields => new List - { - nameof(Employee.Name), - nameof(Employee.Id), - nameof(Employee.EmailAddress), - nameof(Employee.HireDate) - }; - public string Logger { get; set; } = String.Empty; - - public async Task GetColumnsFromState() + private TelerikTreeList? TreeListRef { get; set; } + + private string Logger { get; set; } = String.Empty; + + private List Data { get; set; } = new(); + + private void GetColumnsFromState() { - // final part of the workaround for getting the field - var columnsState = TreeListRef.GetState().ColumnStates; + var columnsState = TreeListRef!.GetState().ColumnStates; int index = 0; foreach (var item in columnsState) { - string columnField = ColumnFields[index]; - bool isVisible = item.Visible != false; - string log = $"

Column: {columnField} | Index in TreeList: {item.Index} | Index in state: {index} | Visible: {isVisible} | Locked: {item.Locked}

"; + string log = $"

Column: {item.Field} | Index in TreeList: {item.Index} | Index in state: {index} | Visible: {isVisible} | Locked: {item.Locked}

"; Logger += log; index++; } } - public List Data { get; set; } - - // sample model - - public class Employee + protected override void OnInitialized() { - // hierarchical data collections - public List DirectReports { get; set; } - - // data fields for display - public int Id { get; set; } - public string Name { get; set; } - public string EmailAddress { get; set; } - public DateTime HireDate { get; set; } + Data = GetTreeListData(); } - // data generation - - // used in this example for data generation and retrieval for CUD operations on the current view-model data public int LastId { get; set; } = 1; - protected override async Task OnInitializedAsync() - { - Data = await GetTreeListData(); - } - - async Task> GetTreeListData() + private List GetTreeListData() { List data = new List(); @@ -684,7 +654,16 @@ } } - return await Task.FromResult(data); + return data; + } + + public class Employee + { + public int Id { get; set; } + public string Name { get; set; } = string.Empty; + public string EmailAddress { get; set; } = string.Empty; + public DateTime HireDate { get; set; } + public List? DirectReports { get; set; } } } #end diff --git a/common-features/data-binding/observable-data.md b/common-features/data-binding/observable-data.md index a32e69a548..6ce4f6c924 100644 --- a/common-features/data-binding/observable-data.md +++ b/common-features/data-binding/observable-data.md @@ -17,7 +17,6 @@ In this article: * [Observable data](#observable-data) * [Refresh Data](#refresh-data) * [Telerik components that support Observable Data](#telerik-components-that-support-observable-data) -* [Telerik components that will support Observable Data in a future release](#telerik-components-that-will-support-observable-data-in-a-future-release) ## Observable Data @@ -52,9 +51,7 @@ The following components support observable data for their `Data` parameter. Not * [TreeView]({%slug treeview-refresh-data%}) -## Telerik components that will support Observable Data in a future release - -The following components will receive this feature in a future release. You can currently refresh their Data by creating a [New collection reference](#refresh-data). +You can refresh other components that do not support observable data by creating a [New collection reference](#refresh-data). * [Scheduler]({%slug scheduler-refresh-data%}) @@ -67,5 +64,5 @@ The following components will receive this feature in a future release. You can ## See Also - * [INotifyCollectionChanged Interface](https://docs.microsoft.com/en-us/dotnet/api/system.collections.specialized.inotifycollectionchanged?view=netframework-4.8) - * [Live Demos](https://demos.telerik.com/blazor-ui/) +* [INotifyCollectionChanged Interface](https://docs.microsoft.com/en-us/dotnet/api/system.collections.specialized.inotifycollectionchanged?view=netframework-4.8) +* [Live Demos](https://demos.telerik.com/blazor-ui/) diff --git a/components/autocomplete/grouping.md b/components/autocomplete/grouping.md index 8fd885170a..2607a8ff94 100644 --- a/components/autocomplete/grouping.md +++ b/components/autocomplete/grouping.md @@ -67,8 +67,6 @@ The group headers can stick to the top of the dropdown during scrolling. In othe * One level of grouping is supported. * A grouped AutoComplete will provide a `Groups` property with a single [`GroupDescriptor`](/blazor-ui/api/Telerik.DataSource.GroupDescriptor) in the [`DataSourceRequest`](/blazor-ui/api/Telerik.DataSource.DataSourceRequest) argument of its [OnRead event]({%slug autocomplete-events%}#onread). This will allow the developer to apply grouping with [manual data operations]({%slug components/grid/manual-operations%}). -* `GroupHeaderTemplate` and `GroupItemTemplate` will be introduced in a future version. Currently there is a bug in the Blazor framework that prevents us from supporting them. -* Virtual scrolling with grouping will be supported in a future version. ## See Also diff --git a/components/combobox/grouping.md b/components/combobox/grouping.md index 8114f8ea5b..8f07ef7cff 100644 --- a/components/combobox/grouping.md +++ b/components/combobox/grouping.md @@ -68,8 +68,6 @@ The group headers can stick to the top of the dropdown during scrolling. In othe * One level of grouping is supported. * A grouped ComboBox will provide a `Groups` property with a single [`GroupDescriptor`](/blazor-ui/api/Telerik.DataSource.GroupDescriptor) in the [`DataSourceRequest`](/blazor-ui/api/Telerik.DataSource.DataSourceRequest) argument of its [OnRead event]({%slug components/combobox/events%}#onread). This will allow the developer to apply grouping with [manual data operations]({%slug components/grid/manual-operations%}). -* `GroupHeaderTemplate` and `GroupItemTemplate` will be introduced in a future version. Currently there is a bug in the Blazor framework that prevents us from supporting them. -* Virtual scrolling with grouping will be supported in a future version. ## See Also diff --git a/components/contextmenu/refresh-data.md b/components/contextmenu/refresh-data.md index 0975823a2d..6c440dc57c 100644 --- a/components/contextmenu/refresh-data.md +++ b/components/contextmenu/refresh-data.md @@ -18,7 +18,7 @@ In this article: ## Observable Data ->note The Context Menu will receive this feature in a future release. You can currently refresh its Data by creating a [New collection reference](#new-collection-reference). +>note The Context Menu does not support binding to observable data. You can currently refresh the component by creating a [new collection reference](#new-collection-reference). @[template](/_contentTemplates/common/observable-data.md#observable-data) diff --git a/components/drawer/refresh-data.md b/components/drawer/refresh-data.md index c55e41955d..26b4a10626 100644 --- a/components/drawer/refresh-data.md +++ b/components/drawer/refresh-data.md @@ -18,7 +18,7 @@ In this article: ## Observable Data ->note The Drawer will receive this feature in a future release. You can currently refresh its Data by creating a [New collection reference](#new-collection-reference). +>note The Drawer does not support binding to observable data. You can currently refresh the component by creating a [new collection reference](#new-collection-reference). @[template](/_contentTemplates/common/observable-data.md#observable-data) diff --git a/components/dropdownlist/grouping.md b/components/dropdownlist/grouping.md index d18347d243..0a132c9266 100644 --- a/components/dropdownlist/grouping.md +++ b/components/dropdownlist/grouping.md @@ -69,8 +69,6 @@ The group headers can stick to the top of the dropdown during scrolling. In othe * One level of grouping is supported. * The `DefaultText` (e.g. "Select item...") is always rendered above the sticky group header in the dropdown. * A grouped DropDownList will provide a `Groups` property with a single [`GroupDescriptor`](/blazor-ui/api/Telerik.DataSource.GroupDescriptor) in the [`DataSourceRequest`](/blazor-ui/api/Telerik.DataSource.DataSourceRequest) argument of its [OnRead event]({%slug components/dropdownlist/events%}#onread). This will allow the developer to apply grouping with [manual data operations]({%slug components/grid/manual-operations%}). -* `GroupHeaderTemplate` and `GroupItemTemplate` will be introduced in a future version. Currently there is a bug in the Blazor framework that prevents us from supporting them. -* Virtual scrolling with grouping will be supported in a future version. ## See Also diff --git a/components/gantt/overview.md b/components/gantt/overview.md index 09c8c5fcd7..8328cff9e4 100644 --- a/components/gantt/overview.md +++ b/components/gantt/overview.md @@ -184,7 +184,7 @@ The Blazor Gantt component exposes templates for customizing the [Timeline]({%sl ## Toolbar -The Blazor Gantt component has a dedicated toolbar for defining user actions. For the moment, they are mostly custom actions, but in future versions you will be able to add features like exporting there. +The Blazor Gantt component has a dedicated toolbar for defining user actions. ## Scrolling diff --git a/components/grid/export/pdf.md b/components/grid/export/pdf.md index 8ccd686feb..23b01d5fb1 100644 --- a/components/grid/export/pdf.md +++ b/components/grid/export/pdf.md @@ -19,4 +19,4 @@ The following sample projects show two ways to implement a PDF export * PDF and JPG Export in the Browser with JS - uses Kendo JS libraries to generate the PDF file from the current DOM in the browser. -In the future, there will be a built-in feature in the grid for this so you don't have to generate the file on your own. You can Follow it here. At the moment, the WebAssembly scenario is too slow for us to release it, mainly due to the missing multithreading and AoT support for Blazor, and full AoT for Mono. \ No newline at end of file +You can also follow the feature request for built-in Grid export to PDF. diff --git a/components/grid/filter/checkboxlist.md b/components/grid/filter/checkboxlist.md index cc37b91dc7..1da1aefc46 100644 --- a/components/grid/filter/checkboxlist.md +++ b/components/grid/filter/checkboxlist.md @@ -198,9 +198,7 @@ depending on how you filter the data so you may never be able to get back all va }); } - // get custom filters data. In a future version you will be able to call these methods - // from the template initialization instead of here (or in OnRead) so that they fetch data - // only when the user actually needs filter values, instead of always - that could improve server performance + // Get custom filters data. await GetTeamOptions(); await GetNameOptions(); } diff --git a/components/listview/paging.md b/components/listview/paging.md index cae563f4e3..e63b3c8740 100644 --- a/components/listview/paging.md +++ b/components/listview/paging.md @@ -64,7 +64,7 @@ The ListView exposes three relevant events. You can find related examples in the >tip You can optimize database queries in two ways: > > * Use an `IQueryable` collection for the listview `Data`. The listview will build a LINQ expression internally that will be resolved only when needed. This can be useful when the `Data` comes from something like an EntityFramework context. -> * Implement [manual data source operations]({%slug listview-manual-operations%}) and implement the desired query yourself. In a future version, the `DataSourceRequest` object will become serializable so you can send it directly over HTTP to a controller and use the LINQ queries it will build for you. +> * Bind the ListView with an [`OnRead` handler]({%slug common-features-data-binding-onread%}) and implement [manual data source operations]({%slug listview-manual-operations%}). ## Pager Settings diff --git a/components/menu/refresh-data.md b/components/menu/refresh-data.md index ccf14d464d..b38d278aa9 100644 --- a/components/menu/refresh-data.md +++ b/components/menu/refresh-data.md @@ -18,7 +18,7 @@ In this article: ## Observable Data ->note The Menu will receive this feature in a future release. You can currently refresh its Data by creating a [New collection reference](#new-collection-reference). +>note The Menu does not support binding to observable data. You can currently refresh the component by creating a [new collection reference](#new-collection-reference). @[template](/_contentTemplates/common/observable-data.md#observable-data) diff --git a/components/multicolumncombobox/grouping.md b/components/multicolumncombobox/grouping.md index 82f79e8a1b..7e0059edbd 100644 --- a/components/multicolumncombobox/grouping.md +++ b/components/multicolumncombobox/grouping.md @@ -79,8 +79,6 @@ The group headers stick to the top of the dropdown during scrolling. In other wo * One level of grouping is supported. * The `Placeholder` (e.g. "Select item...") is always rendered above the sticky group header in the dropdown. * A grouped MultiColumnComboBox will provide a `Groups` property with a single [`GroupDescriptor`](/blazor-ui/api/Telerik.DataSource.GroupDescriptor) in the [`DataSourceRequest`](/blazor-ui/api/Telerik.DataSource.DataSourceRequest) argument of its [OnRead event]({%slug multicolumncombobox-events%}#onread). This will allow the developer to apply grouping with [manual data operations]({%slug common-features-data-binding-onread%}). -* `GroupHeaderTemplate` and `GroupItemTemplate` will be introduced in a future version. Currently there is a bug in the Blazor framework that prevents us from supporting them. -* Virtual scrolling with grouping will be supported in a future version. ## See Also diff --git a/components/multiselect/grouping.md b/components/multiselect/grouping.md index 2586451433..a7b8749d95 100644 --- a/components/multiselect/grouping.md +++ b/components/multiselect/grouping.md @@ -68,8 +68,6 @@ The group headers can stick to the top of the dropdown during scrolling. In othe * One level of grouping is supported. * A grouped MultiSelect will provide a `Groups` property with a single [`GroupDescriptor`](/blazor-ui/api/Telerik.DataSource.GroupDescriptor) in the [`DataSourceRequest`](/blazor-ui/api/Telerik.DataSource.DataSourceRequest) argument of its [OnRead event]({%slug multiselect-events%}#onread). This will allow the developer to apply grouping with [manual data operations]({%slug components/grid/manual-operations%}). -* `GroupHeaderTemplate` and `GroupItemTemplate` will be introduced in a future version. Currently there is a bug in the Blazor framework that prevents us from supporting them. -* Virtual scrolling with grouping will be supported in a future version. ## See Also diff --git a/components/scheduler/refresh-data.md b/components/scheduler/refresh-data.md index bb288e8b39..85162fa81a 100644 --- a/components/scheduler/refresh-data.md +++ b/components/scheduler/refresh-data.md @@ -135,7 +135,7 @@ You can refresh the Scheduler data by using the Rebind method exposed to the ref ## Observable Data ->note The Scheduler will receive this feature in a future release. You can currently refresh its Data by creating a [New collection reference](#new-collection-reference). +>note Refresh the Scheduler data by creating a [New collection reference](#new-collection-reference). @[template](/_contentTemplates/common/observable-data.md#observable-data) diff --git a/components/textarea/overview.md b/components/textarea/overview.md index a7f9983625..00889a5241 100644 --- a/components/textarea/overview.md +++ b/components/textarea/overview.md @@ -55,7 +55,7 @@ The Blazor TextArea provides various parameters to configure the component: | ----------- | ----------- | ----------- | | `AutoCapitalize` | `string` | A `string` that maps to the [`autocapitalize`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize) attribute of the HTML element. It's applicable only for touch devices and virtual keyboards. | | `AutoComplete` | `bool` | Maps to the autocomplete attribute of the HTML `