In the previous post I showed you how to implement conditional format functionality for datagridviews using C#, working on conditions that we already know at compile time, which means that those conditions will be written by programmers, not end users.
In this post I’ll show you how to deal with user defined conditional formats, which is a more useful thing to do if what you want to provide this kind of functionality. With this new feature the users are going to be able to write conditions in an Excel fashion (formula like, if you will)
To implement this feature I’ve upgraded the project that we been using for this series to .NET Framework 4.5 in order to use the latest version of the Roslyn compiler. The Roslyn compiler is the backbone of this feature. If you are interested in Roslyn, I made a series on How to build a DSL on top of Roslyn that covers some basic stuff of this great piece of software.
As in the Roslyn DSL series I'll rely on source to source translation to go from the expressions written by users to C# code and then execute that code using the Roslyn APIs.
I’m going to use the same condition that I used in the previous post, but this time instead of using a function written in C# I’ll use a formula written in plain text (the same thing that the end user will do) and use a utility method to compile that formula into a C# function.
If you run the sample app, you will see that the end result is the same that we get with the previous post.
This feature is not ready for prime time yet, on large data sets the performance is not good (sucks, really), there’s no error checking or guidance for syntax errors, we are not persisting the conditional formats and so on and so fort… but I think it’s a good starting point if you have to implement this kind of functionality.
In the meantime I’ll continue working on this feature, sanding off rough edges and posting updates on this blog.
You can get the code from here