JavaScript UI Libraries & Blazor Components Suite – Smart UI › Forums › Data Grid › OnFilter Event (Blazor)
Tagged: datagrid blazor filtering
- This topic has 9 replies, 3 voices, and was last updated 3 years, 2 months ago by
admin.
-
AuthorPosts
-
November 23, 2021 at 5:28 pm #102589
TurricanDE
ParticipantIs there an easy way to get the filter phrase like “contains Andrew or contains Nancy” from this event like what is described in the Javascript Grid API?
ev.detail.data
– Array of {dataField: string, filter: string}.
dataField is the column’s data field.
filter is a filter expression like ‘startsWith B’
In Blazor I have the following Event-Handler:
private async Task OnFilter(Event ev)
{
GridFilterEventDetail filterEventDetail = ev[“Detail”];=> What’s next here =? I want to know the name of the dataField and the filter value (“contains Andrew or contains Nancy”)
}
-
This topic was modified 3 years, 3 months ago by
TurricanDE.
November 24, 2021 at 5:15 pm #102591Yavor Dashev
ParticipantHi TurricanDE,
I have prepared a quick code snippet on how to achieve the functionality that you need.
private void filterEvent(Event ev) { GridFilterEventDetail filterEventDetail = ev["Detail"]; Console.WriteLine(filterEventDetail.Data[0].filter.filters[0]); Console.WriteLine(filterEventDetail.Data[0].dataField); }
Let me know what you think!
Please, do not hesitate to contact us if you have any additional questions.
Best regards,
Yavor DashevSmart UI Team
https://www.htmlelements.com/November 25, 2021 at 8:24 am #102592TurricanDE
ParticipantHello Yavor,
Thank you for the example.
filterEventDetail.Data[0].dataField is exactly what I needed, but
filterEventDetail.Data[0].filter.filters[0] gives me an Object and not the filter phrase as a string.
In the debugger I can’t see how to get easily the filter string from this Object.
Any advice?
November 26, 2021 at 4:26 pm #102595Yavor Dashev
ParticipantHi TurricanDE,
I have created another code snippet as a workaround to showcase you how to get the filter string from the Grid component
List<string> stringConditions = new List<string> (){ "EMPTY", "NOT_EMPTY", "CONTAINS", "CONTAINS_CASE_SENSITIVE", "DOES_NOT_CONTAIN", "DOES_NOT_CONTAIN_CASE_SENSITIVE", "STARTS_WITH", "STARTS_WITH_CASE_SENSITIVE", "ENDS_WITH", "ENDS_WITH_CASE_SENSITIVE", "EQUAL", "NOT_EQUAL", "EQUAL_CASE_SENSITIVE", "NOT_EQUAL_CASE_SENSITIVE", "NULL", "NOT_NULL" }; private void filterEvent(Event ev) { GridFilterEventDetail filterEventDetail = ev["Detail"]; string logicalOperator= ""; if(filterEventDetail.Columns[0]["_filterState"]["logicalOperator"] == -1 ) { logicalOperator = "and"; } else { logicalOperator = "or"; } int firstFilterComparison = filterEventDetail.Columns[0]["_filterState"]["firstFilterComparison"]; string firstFilterValue = filterEventDetail.Columns[0]["_filterState"]["firstFilterValue"]; int secondFiltercomparison= filterEventDetail.Columns[0]["_filterState"]["secondFilterComparison"]; string secondFilterValue= filterEventDetail.Columns[0]["_filterState"]["secondFilterValue"]; Console.WriteLine(stringConditions[firstFilterComparison] + " " + firstFilterValue+ " "+ logicalOperator+ " " + stringConditions[secondFiltercomparison] + " " + secondFilterValue); }
Let me know what you think!
Please, do not hesitate to contact us if you have any additional questions.
Best regards,
Yavor DashevSmart UI Team
https://www.htmlelements.com/November 29, 2021 at 4:42 pm #102602TurricanDE
ParticipantHello Yavor,
Thank you so much for the example. It is the right direction
But the example will only work for “contains <sometext>” when you set the filter programmatically. For example “does_not_contains <sometext>” and the others string conditions doesn’ work ( I guess the filter conditions must have other names).
I found in the Grid API documentation the supported filter conditions :
https://www.htmlelements.com/docs/grid-filtering-sorting/
But I’ve tried to set the condition like “notcontains <sometext>” but the filter panel shows me “startsWith” ?
When I set the filter condition like “startswith <sometext>” the filter panel shows me “equal”?
What I am doing wrong?
November 30, 2021 at 2:45 pm #102606Yavor Dashev
ParticipantHi TurricanDE,
It’s my fault for the wrong behavior, because the default filters for the SmartGrid others and the ones that I shared are all the filters available for the SmartGrid.
This is how the filter conditions list should be in order to get the right results:
List<string> stringConditions = new List<string> (){ "EMPTY", "NOT_EMPTY", "CONTAINS", "DOES_NOT_CONTAIN", "STARTS_WITH", "ENDS_WITH", "EQUAL", "NOT_EQUAL", "NULL", "NOT_NULL" };
Let me know if this works for you!
Please, do not hesitate to contact us if you have any additional questions.
Best regards,
Yavor DashevSmart UI Team
https://www.htmlelements.com/December 1, 2021 at 11:46 am #102614TurricanDE
ParticipantHello Yavor,
Yes I’ve seen this before, I already set the string conditions like you suggested.
But when I collect the filter string in the Event then the string looks like
“CONTAINS abc” or “DOES_NOT_CONTAIN abc” and so on…
But what has the filter string exactly looks like for every condition if we set this collected filter string programmatically somewhere else?
It works when I set “contains abc”.
But not if I set “does_not_contain abc” etc. (I user lower case)
The hamburger menu is gone and the grid didn’t respond anymore.
I use the Grid Filtering.Filter property like this:
List<IEnumerable<string>> Filter = new List<IEnumerable<string>>()
{
new List<string> { “FirstName”, “contains Andrew” } // => works};
or
List<IEnumerable<string>> Filter = new List<IEnumerable<string>>()
{
new List<string> { “FirstName”, “does_not_contain Andrew” } // => doesn’t work
};MyGrid.Filtering.Filter = filter
I thought the conditions have to be like as in the documentation:
https://www.htmlelements.com/docs/grid-filtering-sorting/
I tried this:
List<IEnumerable<string>> Filter = new List<IEnumerable<string>>()
{
new List<string> { “FirstName”, “startswith Paul” }// => the filter is working, but the filter column panel shows me “equal” instead of “starts with” for the first condition
};-
This reply was modified 3 years, 2 months ago by
TurricanDE.
-
This reply was modified 3 years, 2 months ago by
TurricanDE.
December 1, 2021 at 2:47 pm #102617Yavor Dashev
ParticipantHi TurricanDE,
When you want to apply the ‘DOES_NOT_CONTAIN’ filter you have to use it like in the following code snippet:
GridFiltering filtering = new GridFiltering() { Enabled = true, Filter = new string[][] { new string[] { "FirstName", "notcontains Andrew" } } };
As for the filter panel this behavior is not expected and I will add a work item for this use case.
Please, do not hesitate to contact us if you have any additional questions.
Best regards,
Yavor DashevSmart UI Team
https://www.htmlelements.com/December 1, 2021 at 3:50 pm #102619TurricanDE
ParticipantHello Yavor,
Thank you for your reply.
Where can I find all other phrases it seems the documentation is outdated?
“notcontains” “startswith” and so on…
Another problem I ran into:
I use often to change dynamically a column set in the grid. Let’s say I have 3 different sets:
Set 1 : Column A (with a “contains” filter), Column B, Column C
Set 2: Column A, Column B (with a “contains” filter), Column C, Column D
Set 3: Column A, Column B, Column C, Column D, Column E (no filters are set in any column)They more I switch between a set with a filter, they more this slows down the grid (every switch is +1 sec slower or so) , a switch to a column set without a filter is immediatley responsive.
I use the Grid.ClearFilter() method before I set the next columns.
December 1, 2021 at 5:12 pm #102620admin
KeymasterHi,
Actually, the docs were updated yesterday with 11.0 release, but these strings are not added to the API and we will add it. However, we have a help topic about filtering and you can find it here: https://www.htmlelements.com/docs/grid-filtering-sorting/
Best Regards,
Peter StoevSmart UI Team
https://www.htmlelements.com/ -
This topic was modified 3 years, 3 months ago by
-
AuthorPosts
- You must be logged in to reply to this topic.