Skip to main content

Telerik Grid and Dynamic filtering


Well let me say this is a tale of solving a problem for an existing system with poor test coverage.  Ok no test coverage.  No I didn't write it.  But yes I have to enhance it.  It isn't badly done code.  I mean there are places it could be improved.  Things I would have done differently.  New shining technologies we could and would use if it is was being done again but all in all it is straight forward and clean.  But it has no working tests, no comments.  I want to modify this code with minimal changes to minimize my risk and move on to more interesting things.  Oh did I mention the front end is built around Telerik.  You either love them or hate them.  For me it just depends on the problem but I usually just avoid them.

Nice term what does it mean....

A grid with filtering drop downs:

We want the filter drop downs with no selected filter value to filter the available options to only available choices based on other filters.



I assumed this would be an easy enhancement.  I just was not sure exactly the best way to do it.  But after more time then I care to admit too and a few path deviations, I came to the conclusion it was going to be harder than I thought.  Maybe some ajax calls after a filter selection or something else.

Well during my stage of coming to terms with what needed to be done, I stumbled across the FilterExpression property on my MasterTableView: grd.MasterTableView.FilterExpression.

OMG!!!

It has exactly what I want.  The where clause for the data being displayed in the grid.

Some more google searches but not much luck on a clear example.

Well I am familiar with Linq.  I have written in the past Dynamic expression code.  This could be what I want.  Now I remember the Dynamic Expression code being a pain to write so I need to dig up all code.  But rather than dig it up I try that Nuget search thingy.  ChaChing, someone has put it together for me.  I don't even have to dig it up.  DynamicQuery is the name and it look usable.

10 minutes later.....

On my drop downs filter Init function.

Pseudo code follows:



//Get the filter expression
string expression = grid.MasterTableView.FilterExpression;
if (expression != string.Empty && !expression.Contains("AreaId"))
                    {
                        var rst = GridRep.GetAllItems()
                             .AsQueryable()
                             .Where(expression)
                             .Select(
                               x => new Area() { SubsystemID = x.AreaID, Name = x.AreaName })
                             .Distinct().OrderBy("Name");
                        rcb.DataSource = rst;
                    }
                    else
                    {
                        rcb.DataSource = AreasRep.GetAllAreas();
                    }

Now that for me this is a simple low impact solution.  Notice the Where extension from the awesome DynamicQuery assembly.  I am using the expression right from the grid.  Maybe not the most efficient solution but low impact and easy to understand.

A shout out to Linq Goodness, Nuget and my fellow community of internet coders: You guys are great!

Cheerio!!!

Comments

Popular posts from this blog

Galaxy Outlaws Review

I just finished Galaxy Outlaws: The Complete Black Ocean Mobius Missions, 1-16.5 It was what I would classify as a good read.  It didn't compel me to read it.  There were a couple of times I found myself not being able to put the book down but I wasn't really compelled to get through quickly. You see I listen to most of my books when I run, drive, shop or doing house chores. I never found myself fighting the urge to run further, drive in circles, shop more often or do more house chores.  That is not to say it was a good read.  It just wasn't a compelling read. I didn't really like the magic vs. star drive thing for star travel. Now, with that said, it did grow on me and in the end, I tended to enjoy it more. The whole magic thing just felt like a get out of jail card through most of the series. The characters even talk about how Mort (wizard) bails them out of bad plans but I am saying it is more a get out of jail free card for the story.  Back yo...