Friday, May 7, 2010

Reporting Services 2008: Showing HTML content, and what it really renders

Embedding HTML within text is possible with Reporting Services. But the problem is, whether Reporting Services supports all HTML tags or not, and that is what I am going show here:

Simply, if you get a value that contains HTML tags, the value can be shown as “HTML”, not as just a value. For example, if a value coming from a column is something like this:

<b><i>Can this be render as HTML?</i></b>

This can be shown as:

Can this be render as HTML?

This does not automatically happen. If you do not  instruct to Reporting Services to render the values as HTML, it will be shown as it is.
REPORT HTML The instruction has to be passed via placeholders. As you know, when you place a field in a cell, it is placed in a placeholder, and all your formatting will be applied to the placeholder. Reporting Services 2008 allows you to add multiple placeholders in a single cell and have different formatting on them, resulting a cell contains values from multiple columns, with different formatting. 

 

 

 

 


So, if you get a value like above and need show them as you want, not just set of HTML tags, get the properties of the placeholder and select the second radio button HTML – Interpret HTML tags as styles.

REPORT HTML2When I tested this, I noticed a kind of issue (for me :)), a discrepancy with BIDS preview and SSRS Report Manager preview. Let me show you. I created below table in tempdb and inserted one record. The values in the record contains set of HTML tags. What I have really added to both Description1 and Description2 is:
REPORT HTML3 
Here is the code.

CREATE TABLE TestTable 
(
    Id int PRIMARY KEY,
    Description1 varchar(max) NOT NULL,
    Description2 varchar(max) NOT NULL
)
 
 
INSERT INTO TestTable
    (Id, Description1, Description2)
VALUES
    (1, 
'
<p><span style=''font-size:8.5pt;font-family:"tahoma";color:blue''>
<b>SQL Server 2008 R2 has RTMed</b></span></p>
 
<p><font size=8.5 color=black face=tahoma>Exciting News! SQL Server 2008 R2 has RTMed 
today. You can get more information, resources and download a free trial
here:&nbsp;<a href="http://www.sqlserverlaunch.com" target="_blank"><font color=blue >http://www.sqlserverlaunch.com</font></a>. 
</p>
',
 
 
'
<p><font size=8.5 color=blue face=tahoma><b>SQL
Server 2008 R2 has RTMed</b></font></p>
 
<p><font size=8.5 color=black face=tahoma>Exciting News! SQL Server 2008 R2 has RTMed 
today. You can get more information, resources and download a free trial
here:&nbsp;<a href="http://www.sqlserverlaunch.com" target="_blank"><font color=blue >http://www.sqlserverlaunch.com</font></a>.
</p>
'
)

If you clearly go through the code, you will see that, though the output of HTML tags are same, a small different is exist between Description1 HTML tags and Description2 HTML tags, for the title which is “SQL Server 2008 R2 has RTMed”. Then I created a Reporting Services project and created a report with this record. Here is my report with BIDS.
REPORT HTML4

Then I opened the placeholder properties of Description1 and set the Markup type as HTML. I did same for Description2 too. Here is the preview of the report.
REPORT HTML5

My next step was, publishing the report. This is what I see when the report is published.
REPORT HTML6

Can you see the difference of preview between designer and report manager? This is because of the HTML tags we have used with Description1. Designer preview shows both columns as we need but Report Manager does not show it properly. I am not sure about the reason, it must be a limitation with HTML renderer in Reporting Services.

HTML Tags supported by Reporting Services 2008
As I mentioned before, Reporting Services 2008 does not support all HTML tags. Here are tags that can be used with Reporting Services 2008.

<A> <FONT> <H1>, <H2>, <H3>, <H4> <SPAN> <DIV> <P> <BR> <LI> <B> <I> <U> <S> <OL> <UL>

Remember, although it supports tags like <SPAN> and <DIV>, it seems it does not take the attributes we add to them. Note that I have set the same style for Description1 title, just like the one I have applied to Description2. Only difference is, I have used <SPAN> for Description1 and <FONT> for Description2. Once complied and published, it seems the Reporting Services has not taken the added attributes in <SPAN> tag to the complied report.

Now you know the how and what we can apply. Have fun!

2 comments:

suminda said...

Hi
I can't see the placeholder in my designer, it is a textbox my designer, no place holder

Dinesh Priyankara said...

Hi Suminda,

What's SQL Server version you use? If it is 2008, when you click on the cell (textbox content), placeholder is automatically selected. You should get the menu as I have shown when right click on it.

Thanks