BackGround:我正在使用Winforms通过Visual Studio 2012创建一个报表。我的报告包括2个表,两个表都在其上方带有文本框,并带有表名。我知道将表行分组在一起,您可以使用“保持在一起”属性,该属性解决了我原来的问题,即仅显示第一行,然后显示其余页面。
问题:但是,当我导出PDF时(例如,带有第一个表),它显示的文本框具有应有的表名,但该表没有显示3页。
问题:如何在报表中将控件保持在一起,而每个控件之间没有潜在的重叠或较大的间隔?
保证金设置代码(XML代码段)
<Page>
<LeftMargin>1in</LeftMargin>
<RightMargin>1in</RightMargin>
<TopMargin>1in</TopMargin>
<BottomMargin>1in</BottomMargin>
<Style />
</Page>
.cs代码段
private void ExportPDF(LocalReport report, string filename)
{
Microsoft.Reporting.WinForms.ReportPageSettings rptPageSettings = report.GetDefaultPageSettings();
string width = "";
double tmp = ((double)rptPageSettings.PaperSize.Width) * .01;
width = tmp.ToString("#0.00",System.Globalization.CultureInfo.InvariantCulture) + "in";
string height = "";
tmp = ((double)rptPageSettings.PaperSize.Height) * .01;
height = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
string topMargin = "";
tmp = ((double)rptPageSettings.Margins.Top) * .01;
topMargin = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
string bottomMargin = "";
tmp = ((double)rptPageSettings.Margins.Bottom) * .01;
topMargin = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
string rightMargin = "";
tmp = ((double)rptPageSettings.Margins.Right) * .01;
topMargin = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
string leftMargin = "";
tmp = ((double)rptPageSettings.Margins.Left) * .01;
topMargin = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
string deviceInfo = "<DeviceInfo><PageWidth>" + width + "</PageWidth><PageHeight>" + height + "</PageHeight><MarginTop>" + topMargin + "</MarginTop><MarginLeft>" + leftMargin + "</MarginLeft><MarginRight>" + rightMargin + "</MarginRight><MarginBottom>" + bottomMargin + "</MarginBottom></DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("PDF", deviceInfo, CreateStream, out warnings);
FileStream fs = new FileStream(filename, FileMode.Create);
m_streams[0].Position = 0;
for (int i = 0; i < m_streams[0].Length; i++)
{
fs.WriteByte((byte)m_streams[0].ReadByte());
}
fs.Close();
}
谢谢!
bottomMargin,rightMargin和leftMargin设置为空字符串:
string bottomMargin = "";
tmp = ((double)rptPageSettings.Margins.Bottom) * .01;
bottomMargin = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
string rightMargin = "";
tmp = ((double)rptPageSettings.Margins.Right) * .01;
rightMargin = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
string leftMargin = "";
tmp = ((double)rptPageSettings.Margins.Left) * .01;
leftMargin = tmp.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "in";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句