After the Q2 2008 SP2 release of RadControls for ASP.NET AJAX we received several messages from customers who upgraded to the service pack and got a clientside javascript error from the
RadFormDecorator saying
"
_a.deleteRule is null or not an object".
Upon further research we were able to determine that the problem comes from using
RadFormDecorator and
RadStyleSheetManager on the same page.
The error is caused by new
code in the RadFormDecorator that has to do with eliminating the short flicker when a page loads. Up until SP2 RadFormDecorator the user would shortly see the default browser elements before those were replaced with their decorated counterparts. Eliminating this flicker was the most common request that came back as feedback from customers. Unfortunately, it is an extremely tricky thing to do - as the way the RadFormDecorator functions is to decorate elements on the clientside, rather than do server-side processing.
We were able to workaround the flickering problem by using a css style to hide input elements, and then show them back after they are decorated. However, the hack relies on the RadFormDecorator being able to find its own CSS file on the client and modify it. Unfortunately, when using RadStyleSheetManager all CSS files are combined into one single file, thus causing the RadFormDecorator to fail. This is a logical error that was not detected during our tests - and unfortunately there is no workaround for the time being.
We are working on ensuring that the RadFormDecorator and RadStyleSheetManager will work properly and the problem will be corrected in a matter of days. For the time being the only way around it is to not use RadStyleSheetManager together with RadFormDecorator.
============================================
Update:
We found that the
RadFormDecorator live examples will not work properly in
Firefox if loaded through the web project of the RadControls installation (
see the screenshot). If loaded directly via the provided Start menu shortcut (
see the screenshot) one will not experience this problem. The RadFormDecorator will function properly in all developer projects and applications as well (except for if
RadStyleSheetManager is used - see above)
=============================================
Update #2:
Two new issues were reported with the
RadFormDecorator new page initialization and page layout mechanism in certain scenarios.
We have prepared solutions and workarounds for all reported issues. Attached is a simple page that provides the workarounds (two of those are pure CSS and one is javascript that needs to be pasted on the page without the need to modify anything else).
=============================================
Update #3:
An issue was reported with some of
RadGrid inputs (such as the "previous page", and "next page" buttons) not visible when the
RadFormDecorator is used. The problem comes from the fact that these inputs have no value/text and their look is styled completely using CSS. The "solutions" page was updated to provide a workaround for this scenario as well. As of the next official update, the
RadFormDecorator will be modified to not style inputs that have a
className/CssClass set. We assume that the presence of a classname would mean that the developer provides separate styling for the input that should not be changed by the
RadFormDecorator. Instead, only "unstyled" inputs will be decorated.
=============================================
Update #4:
All problems
discussed in this forum thread are fixed in the "Futures" release which
is available from the Downloads section in your Client.net account.
There is a new problem however with INPUT elements that become
invisible on the page when RadFormDecorator is used in MasterPage /
ContentPage scenario. This problem is a side effect from a new approach
that we tried to eliminate the initial flickering of the skinned
controls.
The good news is that we will fix this problem as well for the Q2
release in 2 weeks. The new solution will be based on the original
implementation of the "anti-flickering" fix which had problems when
used with RadStyleSheetManager. Now we will make some changes in both
products and from Q2 everything will work as expected.
For the time being there is a workaround that you can use in case you
stumble upon this problem. What you need to do is to add the following
code on the page:
| <%@ Page Language="csharp" AutoEventWireup="true" MasterPageFile="./MasterPage.master" %> |
| |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server"> |
| </asp:ScriptManager> |
| |
| <script runat=server language=csharp> |
| public void OnPreRender(object sender, System.EventArgs args) |
| { |
| int last = RadFormDecorator1.Controls.Count -1; |
| RadFormDecorator1.Controls[last].ID = RadFormDecorator1.ID + "_hiddenInputsStyle"; |
| } |
| </script> |
| |
| <telerik:RadFormDecorator OnPreRender="OnPreRender" ID="RadFormDecorator1" runat="server" /> |
| |
| <telerik:RadComboBox ID="cmbLeerling" runat="server" AutoPostBack="True" CausesValidation="False" |
| Skin="Outlook" Width="200px" AllowCustomText="True" MarkFirstMatch="True"> |
| <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation> |
| </telerik:RadComboBox> |
| |
| </asp:Content> |