Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 0 additions & 90 deletions components/filter/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ position: 11
This article explains the available events for the Telerik Filter for Blazor:

* [OnUpdate](#onupdate)
* [ValueChanged](#valuechanged)

## OnUpdate

Expand Down Expand Up @@ -66,95 +65,6 @@ The `OnUpdate` event fires when the user changes the Filter `Value`. The compone
}
````

## ValueChanged

The `ValueChanged` event fires when the value has changed. Its event handler receives the updated `CompositeFilterDescriptor` as an argument.

> The `ValueChanged` event is deprecated and will be removed in future versions. Use the `OnUpdate` event instead.

>caption Handle ValueChanged

````RAZOR
@* This code snippet showcases an example of how to handle the ValueChanged event. *@

@using Telerik.DataSource

<TelerikFilter Value="@Value" ValueChanged="@OnValueChanged">
<FilterFields>
<FilterField Name="@(nameof(Person.EmployeeId))" Type="@(typeof(int))" Label="Id"></FilterField>
<FilterField Name="@(nameof(Person.Name))" Type="@(typeof(string))" Label="First Name"></FilterField>
<FilterField Name="@(nameof(Person.AgeInYears))" Type="@(typeof(int))" Label="Age"></FilterField>
<FilterField Name="@(nameof(Person.IsOutOfOffice))" Type="@(typeof(bool))" Label="Out Of Office"></FilterField>
<FilterField Name="@(nameof(Person.HireDate))" Type="@(typeof(DateTime))" Label="Hire Date"></FilterField>
</FilterFields>
</TelerikFilter>

<div>
<strong>ValueChanged triggered count: </strong> @TriggeredValueChangedCount

<div class="log-container">
List of applied filters:
@compositeFilterDescriptorFragment(Value)
</div>
</div>

@code {
public CompositeFilterDescriptor Value { get; set; } = new CompositeFilterDescriptor();
public int TriggeredValueChangedCount { get; set; }

private void OnValueChanged(CompositeFilterDescriptor filter)
{
Value = filter;
TriggeredValueChangedCount++;
}

static RenderFragment<CompositeFilterDescriptor> compositeFilterDescriptorFragment = (cfd) =>
@<text>
@{
<div>CompositeFilterDescriptor info: Logical Operator: @cfd.LogicalOperator</div>

FilterDescriptor currentFilterDescriptor;
CompositeFilterDescriptor currentCompositeDescriptor;

@foreach (var item in cfd.FilterDescriptors)
{
if (item is CompositeFilterDescriptor)
{
currentCompositeDescriptor = item as CompositeFilterDescriptor;
@compositeFilterDescriptorFragment(currentCompositeDescriptor);
}
else
{
currentFilterDescriptor = item as FilterDescriptor;
@filterDescriptorFragment(currentFilterDescriptor)
}
}
}
</text>;

static RenderFragment<FilterDescriptor> filterDescriptorFragment = (fd)
=> @<text><div>FilterDescriptor info: Member: @fd.Member Type: @fd.MemberType Value: @fd.Value</div></text>;
public class Person
{
public int EmployeeId { get; set; }

public string Name { get; set; }

public int AgeInYears { get; set; }

public bool IsOutOfOffice { get; set; }

public DateTime HireDate { get; set; }
}
}

<style>
.log-container div {
clear: both;
}
</style>
````

## See Also

* [Live Demo: Filter](https://demos.telerik.com/blazor-ui/filter/overview)
11 changes: 5 additions & 6 deletions components/filter/fields/templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ To use the Filter Field value template, add a `<ValueTemplate>` tag inside the [
@using Telerik.DataSource
@using Telerik.DataSource.Extensions

<TelerikFilter Value="@FilterValue" ValueChanged="@OnValueChanged">
<TelerikFilter Value="@FilterValue" OnUpdate="@OnUpdate">
<FilterFields>
<FilterField Name="@(nameof(Food.Id))" Type="@(typeof(int))" Label="Id" />
<FilterField Name="@(nameof(Food.Name))" Type="@(typeof(string))" Label="Name">
Expand All @@ -49,7 +49,7 @@ To use the Filter Field value template, add a `<ValueTemplate>` tag inside the [
<TelerikNumericTextBox Value="@((decimal?)context.FilterDescriptor.Value)"
Format="C"
Step="0.01m"
ValueChanged="@( (decimal? value) => NumericValueChanged(context.FilterDescriptor, value) )">
ValueChanged="@((decimal? value) => NumericValueChanged(context.FilterDescriptor, value))">
</TelerikNumericTextBox>
</ValueTemplate>
</FilterField>
Expand All @@ -76,7 +76,7 @@ To use the Filter Field value template, add a `<ValueTemplate>` tag inside the [

private CompositeFilterDescriptor FilterValue { get; set; } = new();

private List<string> Suggestions { get; set; } = new () { "Pasta", "Burger", "Pizza", "Kebab", "Steak", "Ice Cream" };
private List<string> Suggestions { get; set; } = new() { "Pasta", "Burger", "Pizza", "Kebab", "Steak", "Ice Cream" };

private void OnFilterValueChanged(FilterDescriptor fd, string value)
{
Expand All @@ -89,10 +89,9 @@ To use the Filter Field value template, add a `<ValueTemplate>` tag inside the [
fd.Value = value;
ProcessGridData(FilterValue);
}
private void OnValueChanged(CompositeFilterDescriptor value)

private void OnUpdate()
{
FilterValue = value;
ProcessGridData(FilterValue);
}

Expand Down
135 changes: 69 additions & 66 deletions components/filter/integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ This article contains the following sections:

**To integrate the Filter with the Telerik Grid, you need to:**

1. Set the Value parameter of the Filter via [one-way](slug:filter-events#valuechanged) or two-way binding. If you want to filter at the moment of change, use Filter with a one-way bound value.
1. Set the Value parameter of the Filter via [one-way](slug:filter-events#onupdate) or two-way binding. If you want to filter at the moment of change, use Filter with a one-way bound value.
2. Update the Grid data based on the Filter value.

>caption Filter with two-way bound value in Grid
Expand Down Expand Up @@ -124,7 +124,7 @@ This article contains the following sections:
@using Telerik.DataSource
@using Telerik.DataSource.Extensions

<TelerikFilter ValueChanged="@OnValueChanged">
<TelerikFilter Value="@FilterValue" OnUpdate="@OnUpdate">
<FilterFields>
<FilterField Name="@(nameof(TreeItem.Id))" Type="@(typeof(int))" Label="Id"></FilterField>
<FilterField Name="@(nameof(TreeItem.Text))" Type="@(typeof(string))" Label="Text"></FilterField>
Expand All @@ -140,13 +140,14 @@ This article contains the following sections:
</TelerikTreeView>

@code {
private CompositeFilterDescriptor FilterValue { get; set; } = new CompositeFilterDescriptor();
public static List<TreeItem> InitialData { get; set; } = new List<TreeItem>();
public List<TreeItem> FlatData { get; set; }
public IEnumerable<object> ExpandedItems { get; set; } = new List<TreeItem>();

private void OnValueChanged(CompositeFilterDescriptor filter)
private void OnUpdate()
{
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor> { filter } };
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor> { FilterValue } };

var datasourceResult = InitialData.ToDataSourceResult(dataSourceRequest);
var filteredList = datasourceResult.Data.Cast<TreeItem>().ToList();
Expand All @@ -157,7 +158,7 @@ This article contains the following sections:
var currentItem = item;
FlatData.Add(currentItem);

while(currentItem.ParentIdValue != null)
while (currentItem.ParentIdValue != null)
{
var parent = InitialData.First(p => p.Id == currentItem.ParentIdValue);

Expand All @@ -178,7 +179,7 @@ This article contains the following sections:
public string Text { get; set; }
public int? ParentIdValue { get; set; }
public bool HasChildren { get; set; }
public ISvgIcon Icon { get; set; }
public ISvgIcon Icon { get; set; }
}

protected override void OnInitialized()
Expand All @@ -192,63 +193,63 @@ This article contains the following sections:
List<TreeItem> items = new List<TreeItem>();

items.Add(new TreeItem()
{
Id = 1,
Text = "Project",
ParentIdValue = null,
HasChildren = true,
Icon = SvgIcon.Folder
});
{
Id = 1,
Text = "Project",
ParentIdValue = null,
HasChildren = true,
Icon = SvgIcon.Folder
});

items.Add(new TreeItem()
{
Id = 2,
Text = "Design",
ParentIdValue = 1,
HasChildren = true,
Icon = SvgIcon.Brush
});
{
Id = 2,
Text = "Design",
ParentIdValue = 1,
HasChildren = true,
Icon = SvgIcon.Brush
});
items.Add(new TreeItem()
{
Id = 3,
Text = "Implementation",
ParentIdValue = 1,
HasChildren = true,
Icon = SvgIcon.Folder
});
{
Id = 3,
Text = "Implementation",
ParentIdValue = 1,
HasChildren = true,
Icon = SvgIcon.Folder
});

items.Add(new TreeItem()
{
Id = 4,
Text = "site.psd",
ParentIdValue = 2,
HasChildren = false,
Icon = SvgIcon.FilePsd
});
{
Id = 4,
Text = "site.psd",
ParentIdValue = 2,
HasChildren = false,
Icon = SvgIcon.FilePsd
});
items.Add(new TreeItem()
{
Id = 5,
Text = "index.js",
ParentIdValue = 3,
HasChildren = false,
Icon = SvgIcon.Js
});
{
Id = 5,
Text = "index.js",
ParentIdValue = 3,
HasChildren = false,
Icon = SvgIcon.Js
});
items.Add(new TreeItem()
{
Id = 6,
Text = "index.html",
ParentIdValue = 3,
HasChildren = false,
Icon = SvgIcon.Html5
});
{
Id = 6,
Text = "index.html",
ParentIdValue = 3,
HasChildren = false,
Icon = SvgIcon.Html5
});
items.Add(new TreeItem()
{
Id = 7,
Text = "styles.css",
ParentIdValue = 3,
HasChildren = false,
Icon = SvgIcon.Css
});
{
Id = 7,
Text = "styles.css",
ParentIdValue = 3,
HasChildren = false,
Icon = SvgIcon.Css
});

InitialData = items;
FlatData = InitialData;
Expand All @@ -272,7 +273,7 @@ This article contains the following sections:
@using Telerik.DataSource
@using Telerik.DataSource.Extensions

<TelerikFilter ValueChanged="@OnValueChanged">
<TelerikFilter Value="@FilterValue" OnUpdate="@OnUpdate">
<FilterFields>
<FilterField Name="@(nameof(Employee.EmployeeId))" Type="@(typeof(int))" Label="Id"></FilterField>
<FilterField Name="@(nameof(Employee.FirstName))" Type="@(typeof(string))" Label="First Name"></FilterField>
Expand All @@ -291,12 +292,13 @@ This article contains the following sections:
</TelerikTreeList>

@code {
private CompositeFilterDescriptor FilterValue { get; set; } = new CompositeFilterDescriptor();
public static List<Employee> InitialData { get; set; } = new List<Employee>();
public List<Employee> Data { get; set; }

private void OnValueChanged(CompositeFilterDescriptor filter)
private void OnUpdate()
{
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor> { filter } };
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor> { FilterValue } };

var datasourceResult = InitialData.ToDataSourceResult(dataSourceRequest);
var filteredList = datasourceResult.Data.Cast<Employee>().ToList();
Expand Down Expand Up @@ -381,7 +383,7 @@ This article contains the following sections:
@using Telerik.DataSource
@using Telerik.DataSource.Extensions

<TelerikFilter ValueChanged="@OnValueChanged">
<TelerikFilter Value="@FilterValue" OnUpdate="@OnUpdate">
<FilterFields>
<FilterField Name="@(nameof(SampleData.Id))" Type="@(typeof(int))" Label="Id"></FilterField>
<FilterField Name="@(nameof(SampleData.Name))" Type="@(typeof(string))" Label="Name"></FilterField>
Expand All @@ -401,12 +403,13 @@ This article contains the following sections:
</Template>
</TelerikListView>

@code{
@code {
private CompositeFilterDescriptor FilterValue { get; set; } = new CompositeFilterDescriptor();
List<SampleData> ListViewData { get; set; } = InitialData;

private void OnValueChanged(CompositeFilterDescriptor filter)
private void OnUpdate()
{
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor>{ filter } };
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor> { FilterValue } };

var datasourceResult = InitialData.ToDataSourceResult(dataSourceRequest);

Expand Down Expand Up @@ -458,7 +461,7 @@ This article contains the following sections:
@using Telerik.DataSource
@using Telerik.DataSource.Extensions

<TelerikFilter ValueChanged="@OnValueChanged">
<TelerikFilter Value="@FilterValue" OnUpdate="@OnUpdate">
<FilterFields>
<FilterField Name="@(nameof(MyChartDataModel.ItemValue))" Type="@(typeof(double))" Label="Value"></FilterField>
<FilterField Name="@(nameof(MyChartDataModel.Category))" Type="@(typeof(string))" Label="Category"></FilterField>
Expand All @@ -479,7 +482,7 @@ This article contains the following sections:

@code {
TelerikChart myChartRef;

private CompositeFilterDescriptor FilterValue { get; set; } = new CompositeFilterDescriptor();
public static List<MyChartDataModel> InitialData { get; set; } = new List<MyChartDataModel>();
public List<MyChartDataModel> ChartData { get; set; }

Expand All @@ -490,9 +493,9 @@ This article contains the following sections:
public string Color { get; set; }
}

private void OnValueChanged(CompositeFilterDescriptor filter)
private void OnUpdate()
{
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor> { filter } };
var dataSourceRequest = new DataSourceRequest { Filters = new List<IFilterDescriptor> { FilterValue } };

var datasourceResult = InitialData.ToDataSourceResult(dataSourceRequest);

Expand Down
Loading