Friday, 30 November 2007

Applying a theme to SPLongOperation

At some point in SharePoint development you'll probably write some code that takes a long time to execute and you'll run into this fella, the SPLongOperation.

Unfortunately though, you may feel let down when you run your code and the page displayed is not branded like the rest of your site.

This is because no theme is applied in the html output, but don't despair, help is at hand. The property LeadingHTML is exactly that, HTML, so I used it to inject a stylesheet link element that references the stylesheet for the current theme.

string style = @"<link rel=""stylesheet"" type=""text/css"" href=""" + currentWeb.ThemeCssUrl + @""" />";

SPLongOperation op = new SPLongOperation(this);
op.LeadingHTML = style + "[Enter your message here]";

After doing this I noticed a flicker at the top of the screen. This was because of the comment tags being rendered by the SPLongOperation. To fix this I also included a style element to hide the element that flickered.

string style = @"<link rel=""stylesheet"" type=""text/css"" href=""" + currentWeb.ThemeCssUrl + @""" /><style> {display:none;visibility:hidden;}</style>";


Dinesh Bolkensteyn said...

Thanks a lot, saved me sometime, great blog

Gautam said...

Hi, I followed your post.It was useful.Thanks...
Please tell me how to apply a custom master page to the page which displays the SharePoint Spin Wheel having the animated gears_an.gif image.

Stephen K said...

I believe this page uses the application master so you should be able to customize it if you customize the application master see my post
How to customize the application master file