I know I promised the new version of the SmartPart for this weekend, but minutes before I wanted to upload the bits to GotDotNet Workspace I found a small issue. It took me some time to find the bug, but now I’m proud to present to you the SmartPart version 1.1! Before you all start downloading the latest version, here’s an overview of the new features:
Support for Custom ToolParts
If you develop web parts the hard traditional way, you probably know that you can create custom tool parts for your web parts. These tool parts will show up on the right hand side when you click “Modify Shared Web Part” in the same area where you can modify default web part properties like Title, Width, etc. Now you can create User Controls which can provide Custom Toolparts, just like the “real” web parts. If you download the latest release from the GotDotNet site, you will find an example of this technique. It comes down to this: if you implement the SmartPart.IAdvancedUserControl interface, you will have a function that can return an array of toolparts which will be shown by SharePoint.
Access to the underlying web part instance
Now it’s possible to access the web part that hosts your user control. So it will be possible to get or set properties of that web part from your user control. In the latest release you will find an example that can change the web part title from code.
“Hidden” custom properties
In the previous version of the SmartPart, the only way to persist a value was to implement a public property and decorate it with the Browsable attribute. The side effect was that this property would show up in the web part’s tool part so user could access it. In many cases this is the desired behavior, and this is also applicable to the new version of the SmartPart. But suppose that you’d like to persist a value that shouldn’t be available for the user. Now you can easily get or set values for a property that will not be exposed to the user by using the GetCustomProperty and SetCustomProperty functions of the smart part web part instance.
Various minor improvements
Some minor changes are made to the code to improve performance and behavior of the SmartPart.
All the interfaces used in the previous version of the SmartPart are left untouched, so theoretically you should be able to upgrade your user controls without having to change anything to your code. If you want to make use of the new version, you have to use the new SmartPart.IAdvancedWebPart interface.
I’m planning to record some short webcasts to illustrate how you can use the SmartPart. The first episode is about the installation, and you can find it over here. Maybe there are some people that want to share their experiences with the SmartPart or talk about the projects in which they have used it. It would be totally cool if we could to some sort of podcast about the SmartPart success stories, if you’re interested, drop me a line and we’ll arrange a Skype session.