SharePoint Blogs / SharePoint University
SharePoint Blogs and SharePoint University - all in one place!
Need SharePoint Training? Attend a SharePoint Bootcamp!

Please delete cookies related to sharepointblogs.com and sharepointu.com to resolve login issues!

Create Your Own Data Entry Form Web Part

There are many scenarios that I always run into on projects or client sites that we need to create our own data entry forms for lists. Microsoft has really done a lot of work around this in exposing the objects that SharePoint uses so we can reuse these and have the same SharePoint look and feel. This post will show you how to build a data entry web part that uses the same objects that SharePoint does.

There are many discussion on creating web parts and rendering the controls that you create onto web parts. This post will not go into that, but will focus on the objects for a data entry form.

The control that we are dealing with is in the Microsoft.SharePoint.WebControls namespace. There are a couple things that you would want to determine before you actually create and render the control, like if the field is hidden or read only etc... After we determine if this field should be created and displayed we simply create a control called  FormField. Once we create this control you simply set a couple properties and SharePoint will take care of the rest. The 3 main properties are ControlMode, ListId and FieldName. ControlMode tells the control which mode that this form is in (Display, Edit and New). The ListId tells the control which list on the site to hook to and FieldName tells the control which field that this control is attached to in the list. There is a fourth property to set if we are in Edit or Display mode and that is ItemId. If we set ItemId and are in Edit or Display mode, then SharePoint will automatically set the control value to that specific items value in the list. After we have added all of our fields, we can create a SaveButton control (In the same namespace, Microsoft.SharePoint.WebControls). You would also set the ControlMode and ListId properties on the save button to hook that specific button to the list as well. Once you have done all that, all you would need to do is add the controls created to your web parts collection (or however you render your controls inside a web part). Once you have the controls showing up, you can enter and edit data, click Save and SharePoint will take care of determining which list and item to hook to and actually updating the correct list item with the new values. There is also a property on the SaveButton called RedirectUrl. If you do not set this property, once the user hits Save it will automatically redirect the user back to the default list page. If you choose, you can set this property back to the calling page or a different page of your choice and when the user hits Save, they will be redirected back to that page. So you can build web parts that mimic the SharePoint data entry forms without the user ever having to go to the list itself. The other control we are using is the FieldLabel control. The FieldLabel control will render the actual label for that specific field. Below is the full code listing to render the web part.

// Create the table object that we are going to add the rows and cells to for our data entry form
Table oTable = new Table();
oTable.CellPadding = 0;
oTable.CellSpacing = 0;

// Get the site that this web part is running on.
SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(Context);

// Get the list we are going to work with
SPList oList = oWeb.Lists["Contacts"];

// Loop through the fields
foreach (SPField oField in oList.Fields)
{
    // See if this field is not hidden
    if (!oField.Hidden && !oField.ReadOnlyField && oField.Type != SPFieldType.Attachments)
    {
        // Create the label field
        FieldLabel oLabelField = new FieldLabel();
        oLabelField.ControlMode = SPControlMode.New;
        oLabelField.ListId = oList.ID;
        oLabelField.FieldName = oField.InternalName;

        // Create the form field
        FormField oFormField = new FormField();
        oFormField.ControlMode = SPControlMode.New;
        oFormField.ListId = oList.ID;
        oFormField.FieldName = oField.InternalName;

        // Add the table row
        TableRow oRow = new TableRow();
        oTable.Rows.Add(oRow);

        // Add the cells
        TableCell oCellLabel = new TableCell();
        oRow.Cells.Add(oCellLabel);
        TableCell oCellControl = new TableCell();
        oRow.Cells.Add(oCellControl);

        // Add the control to the table cells
        oCellLabel.Controls.Add(oLabelField);
        oCellControl.Controls.Add(oFormField);
   
        // Set the css class of the cell for the SharePoint styles
        oCellLabel.CssClass = "ms-formlabel";
        oCellControl.CssClass = "ms-formbody";
    }
}

// Create the save button
SaveButton oButtonSave = new SaveButton();
oButtonSave.ControlMode = SPControlMode.New;
oButtonSave.ListId = oList.ID;

// Create the row for the save button
TableRow oRowButton = new TableRow();
oTable.Rows.Add(oRowButton);

// Create the cell for the save button
TableCell oCellButton = new TableCell();
oCellButton.ColumnSpan = 2;
oRowButton.Cells.Add(oCellButton);

// Add the table to the web part controls collection
Controls.Add(oTable);

Following is a screen shot of the web part that was rendered with the above code.

Enjoy!!!


Posted 09-24-2007 8:59 PM by ethan

Comments

bazztrap wrote re: Create Your Own Data Entry Form Web Part
on 09-25-2007 8:22 AM

This is nice!,

13 Links Today (2007-09-26) wrote 13 Links Today (2007-09-26)
on 09-26-2007 10:20 AM

Pingback from  13 Links Today (2007-09-26)

valentino wrote re: Create Your Own Data Entry Form Web Part
on 10-04-2007 3:36 PM

Brilliant, well impressed !!!

Mark Smith wrote re: Create Your Own Data Entry Form Web Part
on 10-05-2007 5:51 PM

Not being picky but is there any way to make the form fields wider? It may help me on a seporate issue with form fields.

markdsmith@comcast.net

David wrote re: Create Your Own Data Entry Form Web Part
on 10-08-2007 9:38 PM

Your code example fails to add the SaveButton to the table cell so that it is rendered. Just thought you might want to update it.

Alex Henderson wrote re: Create Your Own Data Entry Form Web Part
on 10-10-2007 5:21 PM

Out of curiosity, how easy is it to take this method and tie in support for attachments - is it even possible to replicate the list item toolbar experience, with the ability to add attachments?

Martin Wanerskar wrote re: Create Your Own Data Entry Form Web Part
on 10-15-2007 3:51 AM

Operation is not valid due to the current state of the object

I get the above error when I try to render a list using this method when the list exists on a top level site, and I try to render it on a subsite.

The List exists at the top-level site.

If I call this page from the top-level site then it works.

If I call this page from anywhere else, I get an error message!

Has anyone else experienced this problem, any ideas?

George wrote re: Create Your Own Data Entry Form Web Part
on 10-15-2007 6:03 PM

When i'm trying the szmple code i always get an error:

"Object reference not set to an instance of an object"

Any Ideas

Michael Stjernstrom wrote re: Create Your Own Data Entry Form Web Part
on 10-18-2007 8:51 AM

Is this solution only applicable when updating one single item in a list or can it be used for multiple updates on a list?

Ernie wrote re: Create Your Own Data Entry Form Web Part
on 10-19-2007 11:29 AM

I have a similar need as Michael Stjernstrom.  Is this possible?

David wrote re: Create Your Own Data Entry Form Web Part
on 10-29-2007 10:19 PM

Is it possible to run this code with elevated privileges? Which piece of the code would I wrap in the elevated privileges to post the form as the system account?

Arun wrote re: Create Your Own Data Entry Form Web Part
on 11-22-2007 3:37 AM

Hi Ethan,

thank you for this nice article. I have a problem. The code is working fine for me. But when I set the RedirectUrl property, the  sharepoint is showing error.

// Create the save button

               SaveButton oButtonSave = new SaveButton();

               oButtonSave.ControlMode = SPControlMode.New;

               oButtonSave.RedirectUrl = "http://localhost:555";

               oButtonSave.ListId = oList.ID;

please help me

fredrik wrote re: Create Your Own Data Entry Form Web Part
on 12-13-2007 6:15 AM

I get the following error when I try to do your code with a list located on another site (topsite) ->Operation is not valid due to the current state of the object.

padolik wrote re: Create Your Own Data Entry Form Web Part
on 01-26-2008 6:50 AM

Thanx much,

cool stuff.  I had the same issue with SaveButton.

I had to add it to controls and render it separately.

Now it works.

Shobha wrote re: Create Your Own Data Entry Form Web Part
on 01-29-2008 1:25 AM

Hi ,

I get this error when is use FieldLabel, FormField control in my User Control Page load event.

I s this controls are only availabe for create child control method ??

'oFormField' is FormField control

'oFormField.Value' threw an exception of type 'System.ArgumentException'

Pls help..

Jhon doe wrote re: Create Your Own Data Entry Form Web Part
on 02-01-2008 7:09 AM

Cool Bannanas so cool is it posable for this webpart once it is build to change the colums according to content type

I have an error wrote re: Create Your Own Data Entry Form Web Part
on 02-02-2008 11:39 PM

I have an error when exceuting this code.

Here is the exception: Value = 'oFormField.Value' a levé une exception de type 'System.NullReferenceException'. In english:

'oFormField.Value' has rosen a type 'System.NullReferenceException' exception

I,m executing this code in a code Behing page within the Page_load method

Adam Cox wrote re: Create Your Own Data Entry Form Web Part
on 02-05-2008 6:58 AM

Hi,

I'm a little stuck in implementing the above solution and was hoping someone would be able to advise...

How is the code above added to a list form (NewForm.aspx for example)?

Do you have a project which contains the code above?

aparna wrote re: Create Your Own Data Entry Form Web Part
on 02-11-2008 7:04 AM

Hi ,

I am getting the following error message....let me know in case u have a solution for the following..

-->

The "Class1" Web Part appears to be causing a problem. Request for the permission of type 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' failed.

Thanks in advance

Rey wrote re: Create Your Own Data Entry Form Web Part
on 03-10-2008 11:41 AM

How do I add attachments to this ... I  know we can add attachments through List.ADD but I am wondering is there any way that I can add the attachments like all the other fields created in the  dataentry using the above code.

           SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(Context);

           SPList oList = oWeb.Lists["ListName"];

           SPListItem myitem = oList.Add();

            -----

             myItem.Attachments.Add(Path.GetFileName(FileUpload1.PostedFile.FileName), contents);

           myItem.Update();

using this code I have created my own button to add items but I really would like to get use of the SP SaveButton.  I would greatly appreciate your help!

Revathi Jayaraman wrote re: Create Your Own Data Entry Form Web Part
on 03-11-2008 11:14 AM

Never mind ....figured out a way to add attachments along the data entry....here is the code ....AttachmentField is the key element.

        foreach (SPField oField in oList.Fields)

           {

               if (oField.Type == SPFieldType.Attachments)

               {

                   FieldLabel oLabelAttachmentField = new FieldLabel();

                   oLabelAttachmentField.ControlMode = SPControlMode.New;

                   oLabelAttachmentField.ListId = oList.ID;

                   oLabelAttachmentField.FieldName = oField.InternalName;

                   FileUpload1 = new FileUpload();

                   FileUpload1.ID = "FileUpload1";

                   AttachmentsField oAttachmentField = new AttachmentsField();

                   oAttachmentField.ControlMode = SPControlMode.New;

                   oAttachmentField.ListId = oList.ID;

                   oAttachmentField.FieldName = oField.InternalName;

                   oAttachmentField.Controls.Add(FileUpload1);  

                   // Create the row for the attachment

                   TableRow oRowAttachment = new TableRow();

                   oTable.Rows.Add(oRowAttachment);

                   TableCell oCellAttachmentLabel = new TableCell();

                   oRowAttachment.Cells.Add(oCellAttachmentLabel);

                   // Create the cell for the save button

                   oCellAttachmentLabel.Controls.Add(oLabelAttachmentField);

                   oCellAttachmentLabel.CssClass = "ms-formlabel";

                   TableCell oCellAttachment = new TableCell();

                   oRowAttachment.Cells.Add(oCellAttachment);

                   oCellAttachment.Controls.Add(oAttachmentField);

                   oCellAttachment.CssClass = "ms-formbody";

              }

           }

hope this will help somebody!

-Rey

Pesi wrote re: Create Your Own Data Entry Form Web Part
on 03-26-2008 5:38 AM

Thank you for the nice article..

Can you please also give a sample code to read, insert and update the data to the database for these controls?

MaxGXL Benefits of Glutathione » MaxGXL Glutathione wrote MaxGXL Benefits of Glutathione » MaxGXL Glutathione
on 03-27-2008 12:24 AM

Contrast that to a Blogspot blog , where I can read the entry normally, but I have to click a link to comment. Then I’ m taken to a page just for commenting. Well, what if I want to reference something in the article? It’ s nice to know what I’ m commenting

Internet Business Training Program wrote Internet Business Training Program
on 03-29-2008 3:49 PM

Your post have brought me a greater insight into a deeper level of thinking for me and I just wish to say thanks.

Vamshi wrote re: Create Your Own Data Entry Form Web Part
on 03-31-2008 11:20 AM

Thanks for a great post !!!

I have used the above code to create a data entry form that sends xml to a web service to insert the data into a database.

But when I try to prepopulate the form with values for Edit mode, I am able to set values for fields of type text only. The code throws off for datetime fields(below is the code snippet).

FormField oFormField = new FormField();

                       oFormField.ListId = oLst.ID;

                       oFormField.ControlMode = SPControlMode.New;

                       oFormField.FieldName = oField.InternalName;

oFormField.Value = oFormField.Field.GetFieldValue(_fieldValue);//_fieldValue is the string value i fetch from a xml file.

Any Idea how to crack it?

hot**** wrote re: Create Your Own Data Entry Form Web Part
on 04-06-2008 10:23 AM

cool!

Francois Verbeeck wrote re: Create Your Own Data Entry Form Web Part
on 04-07-2008 7:51 AM

Indeed, invaluable ressource. it saved me a ton of time in a crtical project.

Thanks a lot and also thank you to Revathi Jayaraman for the upload code.

Renard wrote re: Create Your Own Data Entry Form Web Part
on 04-11-2008 2:22 AM

Hi all,

This code works great, and thanks a lot for it !!.

But i've got a problem. I've created the possibility to select the list from a dropdownlist. After you selected the list, the code wil generate a nice form for it.

All works fine, except the data isn't entered into the list. When i'm not using the dropdownlist, all works perfect.

Any suggestions?

Greetings. Hans Renard

Renard wrote re: Create Your Own Data Entry Form Web Part
on 04-17-2008 3:47 AM

Hi all

I couldn't solve my previous problem. Instead, I removed the dropdownlist and now i'm setting the listname with the properties of the webpart. This works fine.

Greetings. Hans Renard

Prasad wrote re: Create Your Own Data Entry Form Web Part
on 04-21-2008 4:37 AM

Hi,

I am also having the same problem as Aparna. When I tried to add the web part it shows the below error message.

"The "Class1" Web Part appears to be causing a problem. Request for the permission of type 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' failed."

Is there any Solution?

Thanks

dumb wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:40 AM

hi  i am a dumb person thanz for the sheet thing

dumb wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:42 AM

hiya  and a idots thanz for help

sex master wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:44 AM

come and *** me

lee gay boy wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:48 AM

i am gay

fanny flaps wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:49 AM

im a ***

fanny flaps wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:49 AM

im a ***

michael wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:51 AM

thanz for help of entry forms

ytreyy wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:55 AM

eyhfghfh

jgnfnjgjn wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:55 AM

dfbhdfnumtyum

spas wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:55 AM

im gay and a mother fucker

trgterg wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 3:56 AM

etvhrebyet

jaskeran bachu wrote re: Create Your Own Data Entry Form Web Part
on 04-25-2008 9:42 AM

hi *** holes

gswegzsesegzswegzswgzse wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 5:54 AM

fjash zuse gh[wg wga\wsghsweg\

lee wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 5:55 AM

i love boys

lee wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 5:57 AM

i like grils

lee wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 5:58 AM

i like grils

lee wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 5:58 AM

i like grils

lee wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 5:59 AM

i like grils

reece wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:05 AM

`edfgbnthlj;pio[';08uyr9p890o/ijm8;u[iyu768oln9kj7iv9obk7ujvkipl76i

james wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:06 AM

i

am

pr

james wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:06 AM

i

am

pr

james wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:07 AM

the only letters i no of the alferbet is KFC

james wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:07 AM

i

am

propa

gay

james wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:07 AM

i

am

propa

gay

chuks wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:08 AM

what the ***

gshbgf wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:09 AM

shfyydfr

jyerhutdryjr wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:09 AM

yjtrjytejutyrehuy

ryuhnfxdhgbgd wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:09 AM

h6gnjfdygfmthnjryfmyl

fgmjhjfnhm wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:10 AM

qh hgmkhgjkhnhtg

hhhhhhhhhhhhhhhh wrote re: Create Your Own Data Entry Form Web Part
on 04-28-2008 6:10 AM

hhfbyughjnhfjn

cerebral palsy cause wrote cerebral palsy cause
on 05-11-2008 5:20 PM

Some health professionals believe that the most commonly used medications to treat CP (diazepam[ such as Valium], baclofen[ Lioresal], and dantrolene[ Dantrium]) should not be given to growing children. They are concerned that the side effects from these

superchinois wrote re: Create Your Own Data Entry Form Web Part
on 07-07-2008 4:14 AM

If I put two of those webparts I got validation group problems.

Any way to solve them?

EC Ogtip wrote re: Create Your Own Data Entry Form Web Part
on 09-11-2008 3:41 AM

Anybody here had ever use javascript to get the value of

a PublishingWebControls:RichHtmlField on a page?

I am doing a document.getElementsByName("EvaluateRichTextField") which is returning me an object. How do you get the valud of this control?

thanks

Blog del CIIN wrote WSS 3.0 & MOSS: Recopilatorio de enlaces interesantes (XXI)!
on 09-23-2008 4:43 PM

Una vez más, os presentamos el recopilatorio (con periodicidad mensual) de recursos interesantes que

WSS 3.0 & MOSS: Recopilatorio de enlaces interesantes (XXI)! « Pasi??n por la tecnolog??a… wrote WSS 3.0 & MOSS: Recopilatorio de enlaces interesantes (XXI)! « Pasi??n por la tecnolog??a…
on 09-23-2008 4:48 PM

Pingback from  WSS 3.0 & MOSS: Recopilatorio de enlaces interesantes (XXI)! « Pasi??n por la tecnolog??a…

N wrote re: Create Your Own Data Entry Form Web Part
on 09-30-2008 1:36 PM

HI EC Ogtip

document.getElementsByName("EvaluateRichTextField").value should work for you.

DHams wrote re: Create Your Own Data Entry Form Web Part
on 10-20-2008 8:00 AM

Hi,I require to provide field selection using check box and on that selection need to create form.

Can you please provide some code if you know....?

thanks

Bhavdip Shah wrote re: Create Your Own Data Entry Form Web Part
on 10-21-2008 6:36 AM

Really Such a nice Blog u have placed here...

It helps me alot for my current sharepoint project...

thanks dear...

pidvahb hahs wrote re: Create Your Own Data Entry Form Web Part
on 10-23-2008 4:17 AM

Hey plz remove all the unnecessary Blogs from this page, It seems too bad to have such a bad blogs on the page since long

Dhams wrote re: Create Your Own Data Entry Form Web Part
on 10-23-2008 9:04 AM

i have added Table in the render method of web part but then my SAVE Button click giving me Javascript error message .... please let me know the solution of it

Robert wrote re: Create Your Own Data Entry Form Web Part
on 12-03-2008 11:09 PM

Interested in  through online data entry? We can help you get started now. Please visit so Real data assistance.com provides high quality and accurate data  entry  services. <a href="www.realdataassistance.com/">Data entry service providers</a>

Moderator wrote re: Create Your Own Data Entry Form Web Part
on 01-16-2009 11:58 AM

Isn't there a moderator to this forum? People have posted crap and it gets through.

Haque wrote re: Create Your Own Data Entry Form Web Part
on 01-17-2009 1:53 AM

Hi Ethan,

Plz add this line to display save button

oCellButton.Controls.Add(oButtonSave);

Modificar funcionilidad de SaveButton | hilpers wrote Modificar funcionilidad de SaveButton | hilpers
on 01-17-2009 2:10 PM

Pingback from  Modificar funcionilidad de SaveButton | hilpers

How to create your own sharepoint data entry form « Gianluca Bosco’s Blog wrote How to create your own sharepoint data entry form &laquo; Gianluca Bosco&#8217;s Blog
on 01-18-2009 11:11 AM

Pingback from  How to create your own sharepoint data entry form &laquo; Gianluca Bosco&#8217;s Blog

dechez wrote re: Create Your Own Data Entry Form Web Part
on 01-20-2009 11:56 AM

Can you tell how to insert date automatically??

Swati wrote re: Create Your Own Data Entry Form Web Part
on 02-08-2009 10:51 PM

It is nice. I will try it.

Suman wrote re: Create Your Own Data Entry Form Web Part
on 03-06-2009 11:08 AM

Thanks a lot Haque for your suggestion

John wrote re: Create Your Own Data Entry Form Web Part
on 03-11-2009 9:38 AM

Hey, I just copied and pasted this code and tested, the data entered into the textboxes is not saving into list. Am i missing something? Can anyone help me?

... wrote re: Create Your Own Data Entry Form Web Part
on 03-16-2009 12:55 AM

Sehr wertvolle Informationen! Empfehlen!

Monu wrote re: Create Your Own Data Entry Form Web Part
on 04-07-2009 9:18 AM

It appears nice. I hope to try it successfully.

Matt wrote re: Create Your Own Data Entry Form Web Part
on 04-24-2009 4:23 PM

This code does not conform to the best practice of disposing of the disposable resources (in this case SPWeb.  

In order to do that replace your

SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(Context);

with this:

using(SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(Context))

{

//place code in here

}

This will ensure that your SPWeb object gets properly disposed of and doesn't hang out and take up precious memory space.

Web Design Company wrote re: Create Your Own Data Entry Form Web Part
on 05-27-2009 6:54 AM

This is very informative and helpful

Raj wrote re: Create Your Own Data Entry Form Web Part
on 06-26-2009 1:50 AM

Thanks for sharing the valuable information, I have the same kind of requirement generating a form based on the list, I have created a custom webpart and imported on to the page but i can see the blank page without any controls, can you please help me how to render the controls?

Ram wrote re: Create Your Own Data Entry Form Web Part
on 07-03-2009 10:32 AM

Thanks for sharing the code, can any one tell me, how can I save/add items in to list using the above code, I don't know how to get the formfield values, please help me

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Need SharePoint Training? Attend a SharePoint Bootcamp!
Posts (c) their respective authors. Everything else (c) 2009 SharePoint Experts, Inc.