I have a unique set of features I need to try an implement and I'm just wondering what might be possible ways to implement these features. The features are as follows:
Dynamically Creating Enum Image Columns
Part of the data I need to display, certain columns may be of a Enum that I need to display different images for. Let's just say the enum set is as follows:
Unknown = unknown.png
Red = red.png
Yellow = yellow.png
Green = green.png
NotAvailable = notavailable.png
I also don't know the names of the columns before hand, which is why everything has to be created dynamically. I have potentially implemented this using a custom ITemplate class that the column class inherits GridTemplateColumn - but it seems messy? I could be wrong, this could be the best way to do this.
Dynamic Hover Information
I also need to show different information if you were to hover over different data. For example, if the user were to hover over an item in one of the columns in the first feature (Dynamically Creating Enum Image Columns) then I want to show a dynamic histogram graph using some other data that I can obtain using the information about the item I'm currently hovering over.
Another case is an item not in an image column, let's say it's a customer name - when I hover over that I want to dynamically show more information about that customer in a tooltip like popup (not modal, but inline)
Expanding Columns with Subcolumns
Another part of my challange, is to find a way for the user to click on possibly an imagebutton in the header of a column and for that column to expand into a subset of columns.
Let's say I have the following columns, noticing that the 'B' column has an optional button to allow the user to expand it:
A | B (+) | C | D
After it's expanded, I would like the following
A | B1 | B2 | B3 | C | D
How could I go about doing that? It's not like a seperate grid, but a modification to the columns. Is there a way to do this slickly (animated possibly?). A postback is probably required (due to the dynamic nature of the columns I'm guessing).
Anyways, anyone up for helping me figure this all out?