Is this for a class? Have you seen the site here: http://dropthings.omaralzabir.com/ or pageflakes.com ? They were written on the same code-base initially.
I took ideas from his work to write my own dashboard for an internal project, that matches what you're asking above. Three columns (but in my case you can change the number and size of the columns according to a predefined list) with draggable widgets, and using jQuery sortable and draggable (you can drag one widget to the page repeatedly).
Ok, so now that I've given you at least one sample project to reference, let me ask for a few more details. How do you build the widgets to get them on the page? Are you building DOM elements in javascript or on the server? That's mostly how I'm tracking my state; a handful of custom attributes on a master div that those custom attributes are part of my JSON to my webservice and the individual parts are .ascx and those attributes tell the ascx how to end up.
IE: I have a RSS reader widget that passes the rss feed I'm reading from. I have a twitter widget that follows one or more users or terms (using the search api) and those terms/users are passed in to the twitter widget. I have a gridview widget that gets the particular sproc from the custom data passed to it. I have a chart that gets the width and height and the sproc from the custom data passed in.
All of the custom data I pass is tied to those attributes on the div wrapper.