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
Comments
Post a Comment