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

Mindhunter By John E Douglas

I read and listen to a lot of books.   I am going to try my hand at some short reviews.  I am going to do this to help me bring order my takeaways, thoughts, and feelings and I hope sharing this helps and interests others.  I like fiction and non-fiction.  I go after science fiction and fantasy in fiction more often than not but like many other genres.  The non-fiction books include but are not limited to self-help, biographies, and history.    Now, these reviews are not intended to be comprehensive takeaways about the learnings, plots, and characters but more what stood out to me.  What I took away from it.  How it made me feel.  If this is something interests you read on: Mindhunter: Inside the FBI's Elite Serial Crime Unit  By John E. Douglas I don't recall where or why I added this book to my library so I wasn't sure what it was about when I started it.   In one sentence: It is the story and career of John E. Douglas and how the FBI's Elite Serial

Microsoft patent division taking cash from at least 5 Android vendors

Microsoft patent division taking cash from at least 5 Android vendors I love some of Microsoft products. However, the patent system is broken. It becomes barrier innovation and small companies. Google and Android is not small but it is success is largely due to the free availability of it to the masses. The masses ability to review, critique and contribute and then use. Just like other products, java, linux, etc.... I suspect the arguments will sound like those of the drug industry. We invested so much we must protect our investment. As we watch big Pharma die a slow death from protectionism and gaming the patent system. A company that wants to make money needs to add VALUE not put up white picket fences. I provide services to my employers. If I put up picket fences to protect my JOB, I would be fired as soon as possible. We need to fire this type of action. It is friction to innovation not lubricant.