Your problem is going to be that the value it is going to use is a string and not a boolean. You could probably go from a checkbox to a textbox just fine. Still I don't think dynamically changing columns is a good way to go. You'd have to write a bunch of conditional code to work with the columns. This doesn't even get into the problems you'll have getting data into the columns and setting the data back into the data source.
I think a better option is to add additional columns that are initially hidden. You can then hook them all up appropriately and then at runtime toggle the visibility as needed. This is how a lot of UIs work such as expanding dialogs and it works really well.