Optional content/fields in SharePoint - quick solution
I had a discussion with a CMS/SharePoint consultant, Eric Fontaine, and he was asking me about having "Optional content" or fields in a MOSS environment; basically, the idea was to have a content section appear depending on the author. There was something similar to that effect in CMS .
Unfortunately, this isn't out of the box with SharePoint, however, the solution was quite simple : we created a simple control in C# that inherits from the ASP.NET Panel and added a property that makes its visible state modify depending on a SharePoint column value. This little solution helped us much more than originally thought and we can't live without it now! There are 3 variants of it now :
- Visible = PageContent.AnyTextOrHtmlField.Value.Length > 0 : this is great for a small panel where, if an Html or Text field is empty, it becomes invisible. The author doesn't implicitly choose the visibility with a checkbox.
- Visible = PageContent.CheckboxField.Value : this is great to have a panel containing a few controls & text to disappear or that you need the author to choose.
- Template1.Visible = CheckBox.Value; Template2.Visible = !CheckBox.Value: this is great when you have 2 templates depending on the author's choice. In our case, we had a picture to show in gray when the checkbox was not selected; and in color when the checkbox was selected by the author.
1. Optional content based on a checkbox
<MyControl:ConditionalCheckPanel runat="server" ControlToValidate="Checkbox1" EnableViewState="false">
<h3>My Title</h3>
<PublishingWebControls:RichHtmlField InputFieldLabel="my field label" FieldName="HtmlField1" runat="server" ID="HtmlField1" />
<PublishingWebControls:RichHtmlField InputFieldLabel="my field label2" FieldName="HtmlField2" runat="server" ID="HtmlField2" />
</MyControl:ConditionalCheckPanel>
2. Optional content based on a control's value length
<MyControl:ConditionalFieldPanel runat="server" ControlToValidate="HtmlField1" EnableViewState="false">
<h3>My Title</h3>
<PublishingWebControls:RichHtmlField InputFieldLabel="my field label" FieldName="HtmlField1" runat="server" ID="HtmlField1" />
</MyControl:ConditionalFieldPanel>
3. "Choice" content based on Checkbox with 2 templates
<MyControl:ConditionalPanel Column="Checkbox1" runat="server" EnableViewState="false">
<TemplateChecked>
<img src="on.gif" alt="On">
</TemplateChecked>
<TemplateUnchecked>
<img src="off.gif" alt="Off">
</TemplateUnchecked>
</MyControl:ConditionalPanel>
All in all, very small controls to develop (only a few development minutes) but very very handy.
Maxime
Comments
- Anonymous
October 08, 2007
PingBack from http://msdnrss.thecoderblogs.com/2007/10/08/optional-contentfields-in-sharepoint-quick-solution/