Question Can't make dynamic filter based on Query. Filter on radzen data grid ?

ahmedaziz

Well-known member
Joined
Feb 22, 2023
Messages
55
Programming Experience
1-3
I work on blazor server side .asp.net core 7 . I face issue I can't return data after filter from list on Radzen data grid

First I create radzen data grid on razor page

ridzen data grid html:
Expand Collapse Copy
<RadzenDataGrid @ref="myDataGrid"  AllowColumnPicking="true" FilterMode="FilterMode.Simple" AllowFiltering="true" PageSizeOptions="@PagingOptions" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive"

                                                data="@databaseData" >


second I create list that receive data after filter

list will receive data:
Expand Collapse Copy
private IEnumerable<CopyExcelDatabaseClass> databaseData = Array.Empty<CopyExcelDatabaseClass>();



    public class CopyExcelDatabaseClass

    {

    

        public string databaseName { get; set; }

        public int ServerID { get; set; }

        public string ServerName { get; set; }

        public string Severity { get; set; }





    }

third function is filter list based on dynamic condition get it from myDataGrid.Query.Filter

function have data after filter:
Expand Collapse Copy
public void getListDataAfterFilter()

{

 var query = myDataGrid.Query.Filter;

 var filteredList = databaseData.Where(query).ToList();

}


this statement return condition Filter from radzen data grid after write filters

var query = myDataGrid.Query.Filter;

return below filter condition

filter expression:
Expand Collapse Copy
(databaseName == null ? "" : databaseName).ToLower().Contains("Menna".ToLower()) and (serverity == null ? "" : serverity).ToLower().Contains("Mon".ToLower())


I try to get result from above and it worked fine

sample test static:
Expand Collapse Copy
var filteredList = databaseData.Where(item => item.databaseName.Contains("DB_U")).ToList();
but issue it static and I need it dynamically meaning based on condition filter Query.Filter
 
But this code already does it dynamically from the data grid:
C#:
Expand Collapse Copy
var query = myDataGrid.Query.Filter;
var filteredList = databaseData.Where(query).ToList();
 
It means that you are already doing what you are trying to achieve: dynamically getting the query filter.
 
No
on here
var filteredList = databaseData.Where(query).ToList();
i need to filter list databaseData based on condition on query variable and after that return list of data filtered
 
And that is exactly what is happening on that line of code.

i need to filter list databaseData
Which is what
C#:
Expand Collapse Copy
databaseData.Where(...)

based on condition on query variable

which is what this does:
C#:
Expand Collapse Copy
databaseData.Where(query)

and after that return list of data filtered

which is what this does:
C#:
Expand Collapse Copy
var filteredList = databaseData.Where(query).ToList();
 
Oh. I see now. You never mentioned that the code doesn't compile. Or at least I'm guessing it doesn't compile based on the Radzen documentation regarding Query.Filter returning a string.

Time to learn about C#'s expression trees:
 
Back
Top Bottom