Project Description
This project is a custom site column for SharePoint that “freeze dries” .NET data structures and stores them in a column. Except for what is surfaced to the column rendering in the view, the data is “opaque” to the SharePoint API. By that I mean you can stuff just about anything you want into the column and get it back. So other than it being a cool demonstration of how to build a Site column, why would you want to use it, or help me make it better. I don’t know about you, but almost every project I have done needs to track data associated with items, that is not really SharePoint typed data, but needs to be associated with an item. Usually I end up creating an external table, linked on the item Guid, and it serves as a place to store things like workflow state, collections of other things to do, links to other systems, configuration data, audit information ,etc. Well I got tired of writing little SQL tables and procedures and started storing this type of stuff in XML in a Note field in SharePoint. Well that worked fine, except it was almost as cumbersome writing specific parsers to populate data structures as it was to put it in SQL. And, end users sometimes ended up seeing the data (by monkeying with views). So I set about to build a small framework for storing binary serialized data in a SharePoint field, that would render acceptably in list views, and on forms. What I ended up with was this project, called the FreezeDriedDataSiteColumn. Its current codebase lets you store just about anything (I even uploaded a 20 meg file as a byte array) and get it back in your code simply by casting the field to your type. It has a custom field definition, a pretty basic property configuration page and a few cute tricks for getting the custom properties to work in list views.


The current codebase includes three projects. The primary project is the Version3.FreezeDriedSiteColumn, it is the site column, the field value and the property page. There is a post build event that installs it all on the current server. There is another project named SampleRenderer which shows you how to wire up a form rendering assembly that is called if you data every becomes visible on a SharePoint form. Its not very elegant yet, but it works. You don’t need a renderer if all of your work with your column is done in code. There is also a program called TestConsole which opens a list and freeze dries and reconstitutes data to exercise the project.
For now, there is not any documentation other than the code comments, I will try to get something out there in the next few weeks. I encourage anyone who wants to, to pitch in on the base project or just come up with and implement some typed columns. I plan on getting to a generic read/unread flag for users fairly soon.


Last edited Jun 12, 2008 at 11:48 PM by robginsburg, version 2