If you have ever developed a WebPart for Windows SharePoint services, then you probably have tried to take advantage of some of the client-side controls, like the
OWSDateField. If you have, then you know how much of a pain in the rear it is to use them.
There are several issues involved with using the OWS controls that come built-in with SharePoint services that are in the
- If you are going to use a control like the
OWSDateField, then you must add an
OWSForm control to the WebPart's child control collection. If you do not, then you will not be able to utilize the
- If you wish to get the data from the control at the server (in other words, have the data posted back), you must create an
OWSSubmitButton control and add it to the form. If you do not, any other posting mechanism will not post the user's input back to the server.
This is the problem with
OWSSubmitButton: there is no server side click event. Microsoft will tell you to check the "
IsPostBack" property on the page, but that is not a viable option if you need more than one button that posts back the data, but does different tasks with it.
- None of the OWS form controls in the
Microsoft.SharePoint.WebControls namespace have the data change events. Even if the data is not posted back, it will not fire an event.
To be blunt, the server-side functionality of the OWS control set is not very robust, yet the client side scripting works quite well.
For an application I developed in my current position, I needed the aforementioned functionality. However, I found nothing on the Internet that really helped me. Therefore, I dug deep into the server-side and client-side functionality of the OWS control set, and I found an elegant way of fixing the above limitations.
First, I created a base class called
OWSBase that handled all of the data postback and value change event handling for all of the derived controls. Next, I created a set of controls (
OWSSubmitButton) that causes the form to postback the data and fire a server-side click event.
Here is the code for the
public abstract class OWSBase : OWSControl, IPostBackDataHandler
Here is the code for one of the derived controls,
OWSDateField. (Note: This
OWSDateField is not the same as the
OWSDateField in the
public class OWSDateField : OWSBase
Here is the code for the submit button:
Included in the download files are the following:
OWSChoiceField, which uses an
Items property with the ListItem's objects to manage items in the choice, it can either be a dropdown list or a radio button choice field. Use the
ChoiceFormat property to specify this.
OWSTextField, which can be a single or multi-line text field, use the
OWSRichTextField, which can get the HTML encoded text with a nice user interface (uses SharePoint client scripting). Use the
I assume you are familiar with developing WebParts for WSS or SPS. I will not give help with Manifext.xml or DWP files. These controls are meant to be used within the context of a SharePoint WebPart.
About the ZIP file
All that is included in the ZIP file are the source files. There is no project file. You may add these files to an existing project, or you may create a base assembly that you can reference in your WebPart projects.
TestWebPart.cs contains a small example of how to use the controls.
I have only tested these controls when they have been compiled into a class library that has been installed in the Global Assembly Cache, and thus fully trusted by SharePoint. You may need to make changes to the code or .config files if you do not sign your assembly with a strong name and install it in the GAC (using the - globalinstall option with stsadm.exe).