Symptom
- Fields placed next to each other in the Crystal Reports designer overlap when viewed in a web application
- The fields do not overlap in the CR designer
Environment
- Crystal Reports 2008 SP1 / SP 2
- Windows XP SP2 / Server2003 SP2
- IIS 6 / 7
- Visual Studio 2008
Reproducing the Issue
- Add 2 string fields with long text values to a report.
- Decrease the 1st field to the point that text will be truncated.
- Move the fields close together
- Save the report.
- View the report in a web application.
Cause
- The Visual Studio .NET WebForms Crystal Report Viewer requires knowledge of the client-side screen DPI to properly compose the report.
- Absolute formatting that the Crystal Report Viewer needs requires knowledge of the screen DPI that the client machine is running.
- The DPI value is then specified using the property CrystalReportViewer.RenderingDPI
Resolution
- There's no standard JavaScript that works across all browser types.
- A workaround is to create a page specific to determining this by measuring an object of 1 inch in height in pixels.
- The following HTML page will achieve the above
<HTML>
<BODY>
Redirecting to viewer…
<div id="dpi" style="height: 1in; left:-100%; position: absolute; top:-100%; width: 1in"></div>
<script type="text/javascript">
//<![CDATA[
window.location = "Viewer.aspx?dpi=" + document.getElementById("dpi").offsetHeight;
//]]>
</script>
</BODY>
</HTML
- The above page creates a div named "dpi" 1inch x 1 inch, and places it off the visible page.
- The JavaScript then redirects to the Viewer page (Viewer.aspx), where the HTTP Get parameter "dpi" is set to be equal to the 1 inch box measured in pixels.
- Then in the Viewer.aspx page, retrieve this value and specify the DPI for the viewer:
protected void Page_Load(object sender, EventArgs e)
{
int dpi = Convert.ToInt32(Request["dpi"];
CrystalReportViewer1.RenderingDPI = dpi;
}
Keywords
forum thread , KBA , BI-DEV-NET , BI Software Development Kits (SDKs) - .NET or Other , How To
Product
Crystal Reports 2008 V1