Radzen DataFilter appears to not support nullable int

Code example to reproduce issue, perhaps not the best 'real world example' but it gets across the issue.

<div class="container-fluid">
<div class="row">
    <div class="col">
        <RadzenCard class="mb-3" style="display: flex; align-items: center; gap: 0.5rem">
            <RadzenCheckBox @bind-Value="@auto" Name="auto" />
            <RadzenLabel Text="Auto filter" Component="auto" Style="margin-left: 8px; margin-right: 32px; vertical-align: middle;" />
            <RadzenButton Text="Apply Filter" Click="@(args => dataFilter.Filter())" Disabled="@auto" />
        </RadzenCard>
        <RadzenCard class="mb-3">
            <RadzenDataFilter @ref="dataFilter" Auto=auto Data="@orders" TItem="Order" ViewChanged=@(view => filteredOrders = view.ToList())
                                FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive">
                <Properties>
                    <RadzenDataFilterProperty TItem="Order" Property="OrderID" Title="Order ID" FilterValue="@selectedIds"
                                                Type="typeof(IEnumerable<int>)" FilterOperator="FilterOperator.Contains">
                        <FilterTemplate>
                            <RadzenDropDown @bind-Value=@selectedIds Style="width:100%;"
                                            Change=@OnSelectedIdsChange Data="@(orderIds)" AllowClear="true" Multiple="true" />
                        </FilterTemplate>
                    </RadzenDataFilterProperty>
                    <RadzenDataFilterProperty TItem="Order" Property="Employee" Title="Employee " />
                    <RadzenDataFilterProperty TItem="Order" Property="StaffCount" Title="Number of Staff" FilterValue="@selectedStaffCountIds"
                                                Type="typeof(IEnumerable<int?>)" FilterOperator="FilterOperator.Contains">
                        <FilterTemplate>
                            <RadzenDropDown @bind-Value=@selectedStaffCountIds Style="width:100%;"
                                            Change=@OnSelectedStaffCountIdsChange Data="@(staffCountIds)" AllowClear="true" Multiple="true" />
                        </FilterTemplate>
                    </RadzenDataFilterProperty>
                </Properties>
            </RadzenDataFilter>
        </RadzenCard>
        <RadzenDataGrid @ref="ordersGrid" AllowPaging="true" AllowSorting="true" Data="@(filteredOrders ?? orders)" TItem="Order"
                        ColumnWidth="200px" PageSize="20" Style="height: 500px">
            <Columns>
                <RadzenDataGridColumn Width="50px" TItem="Order" Title="#" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Frozen=true>
                    <Template>
                        @(orders.IndexOf(context) + 1)
                    </Template>
                </RadzenDataGridColumn>
                <RadzenDataGridColumn Width="200px" TItem="Order" Property="OrderID" Title="Order ID" />
                <RadzenDataGridColumn Width="200px" TItem="Order" Property="Company" Title="Company" />
                <RadzenDataGridColumn TItem="Order" Property="Employee" Title="Employee">
                    <Template Context="order">
                        @order.Employee
                    </Template>
                </RadzenDataGridColumn>
                <RadzenDataGridColumn TItem="Order" Property="StaffCount" Title="StaffCount" />
            </Columns>
        </RadzenDataGrid>
    </div>
</div>
</div>

@code {
bool auto = true;
RadzenDataFilter<Order> dataFilter;

IList<Order> filteredOrders;
IList<Order> orders;
RadzenDataGrid<Order> ordersGrid;

IEnumerable<int> selectedIds;
IEnumerable<int> orderIds;
IEnumerable<int?> staffCountIds;
IEnumerable<int> selectedStaffCountIds;


void OnSelectedIdsChange(object value)
{
    if (selectedIds != null && !selectedIds.Any())
    {
        selectedIds = null;
    }
}

void OnSelectedStaffCountIdsChange(object value)
{
    if (selectedStaffCountIds != null && !selectedStaffCountIds.Any())
    {
        selectedStaffCountIds = null;
    }
}

protected override void OnInitialized()
{
    var list = new List<Order>();
    list.Add(new Order { OrderID = 1024, Company = "ABC Company", Employee = "Steven Buchanan", StaffCount = 64 });
    list.Add(new Order { OrderID = 2105, Company = "Carson Inc.", Employee = "Gary Jones", StaffCount = 202 });
    list.Add(new Order { OrderID = 1025, Company = "Pearson Furniture", Employee = "Alison McArthur", StaffCount = 24 });
    list.Add(new Order { OrderID = 1026, Company = "Gary's Automotive", Employee = "Mireille St-Arnaud", StaffCount = 8 });
    list.Add(new Order { OrderID = 1899, Company = "142823 LLC", Employee = "Philippe Massey", StaffCount = 18 });
    list.Add(new Order { OrderID = 1019, Company = "Happy Coffee Imporium", Employee = "", StaffCount = (int?)null });

    orders = list.ToList();

    orderIds = orders.Select(o => o.OrderID).Distinct();
    staffCountIds = orders.Select(o => o.StaffCount).Distinct();
}

public class Order
{
    public int OrderID { get; set; }
    public string Employee { get; set; }
    public string Company { get; set; }
    public int? StaffCount { get; set; }

}
}

The problem was actually in the RadzenDropDown/DropDownBase component not casting properly the selected value. There is a problem however in your code as well:

This should be IEnumerable<int?>.

I had tried that too but was getting similar errors.

Thank you for your attention, I'll wait for the next update.

The fix is already in the master branch:

Unfortunately, this continues to return - Specified cast is not valid.

<RadzenCard class="mb-3" style="display: flex; align-items: center; gap: 0.5rem">
    <RadzenCheckBox @bind-Value="@auto" Name="auto" />
    <RadzenLabel Text="Auto filter" Component="auto" Style="margin-left: 8px; margin-right: 32px; vertical-align: middle;" />
    <RadzenButton Text="Apply Filter" Click="@(args => dataFilter.Filter())" Disabled="@auto" />
</RadzenCard>
<RadzenCard class="mb-3">
    <RadzenDataFilter @ref="dataFilter" Auto=auto Data="@orders" TItem="Order" ViewChanged=@(view => filteredOrders = view.ToList())
                        FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive">
        <Properties>
            <RadzenDataFilterProperty TItem="Order" Property="OrderID" Title="Order ID" FilterValue="@selectedIds"
                                        Type="typeof(IEnumerable<int>)" FilterOperator="FilterOperator.Contains">
                <FilterTemplate>
                    <RadzenDropDown @bind-Value=@selectedIds Style="width:100%;"
                                    Change=@OnSelectedIdsChange Data="@(orderIds)" AllowClear="true" Multiple="true" />
                </FilterTemplate>
            </RadzenDataFilterProperty>
            <RadzenDataFilterProperty TItem="Order" Property="Employee" Title="Employee " />
            <RadzenDataFilterProperty TItem="Order" Property="StaffCount" Title="Number of Staff" FilterValue="@selectedStaffCountIds"
                                        Type="typeof(IEnumerable<int?>)" FilterOperator="FilterOperator.Contains">
                <FilterTemplate>
                        <RadzenDropDown @bind-Value=@selectedStaffCountIds Style="width:100%;" TValue="IEnumerable<int?>"
                                    Change=@OnSelectedStaffCountIdsChange Data="@(staffCountIds)" AllowClear="true" Multiple="true" />
                </FilterTemplate>
            </RadzenDataFilterProperty>
        </Properties>
    </RadzenDataFilter>
</RadzenCard>
<RadzenDataGrid @ref="ordersGrid" AllowPaging="true" AllowSorting="true" Data="@(filteredOrders ?? orders)" TItem="Order"
                ColumnWidth="200px" PageSize="20" Style="height: 500px">
    <Columns>
        <RadzenDataGridColumn Width="50px" TItem="Order" Title="#" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Frozen=true>
            <Template>
                @(orders.IndexOf(context) + 1)
            </Template>
        </RadzenDataGridColumn>
        <RadzenDataGridColumn Width="200px" TItem="Order" Property="OrderID" Title="Order ID" />
        <RadzenDataGridColumn Width="200px" TItem="Order" Property="Company" Title="Company" />
        <RadzenDataGridColumn TItem="Order" Property="Employee" Title="Employee">
            <Template Context="order">
                @order.Employee
            </Template>
        </RadzenDataGridColumn>
        <RadzenDataGridColumn TItem="Order" Property="StaffCount" Title="StaffCount" />
    </Columns>
</RadzenDataGrid>


@code {
bool auto = true;
RadzenDataFilter<Order> dataFilter;

IList<Order> filteredOrders;
IList<Order> orders;
RadzenDataGrid<Order> ordersGrid;

IEnumerable<int> selectedIds;
IEnumerable<int> orderIds;
IEnumerable<int?> staffCountIds;
IEnumerable<int?> selectedStaffCountIds;


void OnSelectedIdsChange(object value)
{
    if (selectedIds != null && !selectedIds.Any())
    {
        selectedIds = null;
    }
}

void OnSelectedStaffCountIdsChange(object value)
{
    if (selectedStaffCountIds != null && !selectedStaffCountIds.Any())
    {
        selectedStaffCountIds = null;
    }
}

protected override void OnInitialized()
{
    var list = new List<Order>();
    list.Add(new Order { OrderID = 1024, Company = "ABC Company", Employee = "Steven Buchanan", StaffCount = 64 });
    list.Add(new Order { OrderID = 2105, Company = "Carson Inc.", Employee = "Gary Jones", StaffCount = 202 });
    list.Add(new Order { OrderID = 1025, Company = "Pearson Furniture", Employee = "Alison McArthur", StaffCount = 24 });
    list.Add(new Order { OrderID = 1026, Company = "Gary's Automotive", Employee = "Mireille St-Arnaud", StaffCount = 8 });
    list.Add(new Order { OrderID = 1899, Company = "142823 LLC", Employee = "Philippe Massey", StaffCount = 18 });
    list.Add(new Order { OrderID = 1019, Company = "Happy Coffee Imporium", Employee = "", StaffCount = (int?)null });

    orders = list.ToList();

    orderIds = orders.Select(o => o.OrderID).Distinct();
    staffCountIds = orders.Select(o => o.StaffCount).Distinct();
}

public class Order
{
    public int OrderID { get; set; }
    public string Employee { get; set; }
    public string Company { get; set; }
    public int? StaffCount { get; set; }

}
}

The fix is not yet released - it will work only if you have project reference to our master branch. Also make sure you pull latest before testing:

datafilter

Sorry, I saw there was a new update today, did not read the Release notes becuase I assume this was part of it.

My bad, thank you!

There are no new updates. The last release was from Monday, the next release will be tomorrow.