Scenario
- You have a Web UserControl with embedded <style> tags within an UpdatePanel.
 
Issue
- Internet Explorer: After an Asynchronous postback some of the Styles are no longer applied.
 
- In my case the height property on a div.  This was confusing since the code was expanding/collapsing the div, but the bug was ignoring the style.
 
- If you check the source via IE Developer Toolbar you will see that the style is supposed to be applied.
 
Resolution
- I was able to resolve this by moving the <style> section to the bottom of the UpdatePanel.
 
- I don't know why this works.
 
- The best solution is to move the <style> section to the Master Page or Aspx Page <header> section.
 
- This is the only approved location for embedded Styles.
 
- You can alternatively include a css file.
 
- Another alternative is to RegisterClientScriptBlock the style or an external css reference from the UserControl
 
Sample Code: 
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <style type="text/css">
            div
            {
                display:block;
                overflow:auto;
            }
            .collapsed 
            {
             height:50px;         
            }
            .expanded
            {
             height:inherit;
            }
        </style>
        <asp:Panel CssClass="collapsed" runat="server" ID="pnlMain">
            1<br />2<br />3<br />4<br />5<br />6<br />
        </asp:Panel>
        <asp:Button ID="btnExpCol" runat="server" Text="Expand" />
    </ContentTemplate>
</asp:UpdatePanel>
 
No comments:
Post a Comment