Devexpress 生成动态xtrareport
我想使用DevExpress生成动态XtraReport,但对于每个员工,我希望在同一pdf文件的新页面上显示其详细信息 Dim queryString As String=String.FormatSELECT*从测试中选择,其中Status='P'按员工代码排序 Dim adap作为SqlDataAdapter adap=新SqlDataAdapterqueryString,connectionString Dim ROWSCONT作为整数=-1 RowScont=adap.Fillds 作为新XRLabel的Dim标签 标签宽度=500 label.Font=New System.Drawing.FontVerdana,10.0F,FontStyle.Bold PageHeader1.Controls.Addlabel 如果rowsCount>0,则 将填充设置为整数=5 Dim tableWidth As Integer=Me.PageWidth-Me.Margins.Left-Me.Margins.Right-padding*2 Dim dynamicTable As XRTable=XRTable.CreateTableNew Rectanglepadding,1,tableWidth,40,1,0'表格列计数 dynamicTable.Width=tableWidth dynamicTable.Rows.FirstRow.Width=表格宽度 dynamicTable.Borders=DevExpress.XtraPrinting.BorderSide.None dynamicTable.BorderWidth=0 尺寸i为整数=0 动态的 对于ds.TABLES 0.Columns中的每个dc As数据列 Dim cell作为新的XRTableCell Dim绑定为新的XRBindingText、ds、ds.Tables0.Columnsi.ColumnName cell.DataBindings.Addbinding cell.CanGrow=False cell.CanShrink=True cell.TextAlignment=DevExpress.XtraPrinting.TextAlignment.MiddleCenter '单元格宽度f=10 '单元格宽度=20 cell.Text=dc.ColumnName dynamicTable.Rows.FirstRow.Cells.Addcell i+=1 下一个dc dynamicTable.Font=New System.Drawing.FontVerdana,8.0F 可动态调整的大小 dynamicTable.EndInit Detail.Controls.AdddynamicTable 'label.Text=String.FormatData表:{0},测试 Me.DataSource=ds Me.DataMember=Test 其他的 label.Text=String.format没有要显示的数据或表不存在 如果结束Devexpress 生成动态xtrareport,devexpress,Devexpress,我想使用DevExpress生成动态XtraReport,但对于每个员工,我希望在同一pdf文件的新页面上显示其详细信息 Dim queryString As String=String.FormatSELECT*从测试中选择,其中Status='P'按员工代码排序 Dim adap作为SqlDataAdapter adap=新SqlDataAdapterqueryString,connectionString Dim ROWSCONT作为整数=-1 RowScont=adap.Fillds 作
你的问题没有太多关于你到底想要完成什么的信息。我怀疑您正试图了解如何基于数据集设置动态数据 检查下面的代码段,其中添加了用于在代码段中显示列名称的标题表和用于显示员工的详细信息表。如果您在设置单元格宽度或样式等方面遇到问题,请查看下面的示例,并根据需要更正报告 发件人: 通过上面的示例,您可以设置报表布局、样式,它还说明了如何根据报表页面宽度调整表宽度 我建议您阅读KB文章,它演示了如何根据报告页面宽度和示例调整表宽度 参考资料: 要限制页面上显示的记录数,您需要 遵循此文档参考。它将在赢的状态和赢的状态下工作 网络表单。您需要使用XRPageBreak控件来实现这一点 目标: 有关此主题的更多参考:
这是一个迟来的答案,但可能会有所帮助 理想情况下,您希望从一开始就设计报表,以便它们始终能够处理多个条目/页面上的多个报表。因此,在您的情况下,设计报告以处理多个员工多个页面/多个员工 不要使用报表页眉和页脚,而是使用组页眉和页脚。创建一个分组以隔离每个分组的单个记录,例如EmployeeID。使用“为此添加组” 然后,将标签放在组标题中。如果缺少标签,请添加一个,仅限详细栏和组页脚。如果缺少,请添加组页脚 然后-必须将组页脚的分页符属性设置为位于标注栏之后,但最后一个条目除外 然后,您可以简单地将查询限制为单个员工的单个页面,或者限制为多个员工的每个员工的单个页面
这意味着您的报告从一开始就具有更大的动态性,几乎不需要任何更改。也就是说,你的报告目前几乎没有变化,因为你可以很容易地重新安排你的报告以适应这一点你在报告中遇到了什么问题。。您只需在此代码段中设置头。。显示员工信息的单元格及其绑定在哪里?谢谢先生。。但我的问题是,如果有两名员工,那么每个员工条目都应该出现在一个pdf文件中的新页面上,我正在开发web应用程序。我给出的示例代码已经运行良好,但它在一个pdf文件中给出了同一页面上所有员工的输出。我希望具有不同员工代码的员工必须放在不同的页面上,但放在同一个pdf文件中。如果是web app,请记住在您的问题中添加winforms、asp.net或mvc标记。我会在一段时间后查找您需要的更改。好的。。谢谢你again@Mudliar:请检查更新的答案,您可以将XRPageBreak控件与条件格式规则一起使用。我有样品测试 应用请尝试使用参考链接,如果您仍然面临问题,请更新我。祝你玩得愉快。。
Public Sub InitDetailsBasedonXRTable(ByVal rep As XtraReport)
Dim ds As DataSet = (CType(rep.DataSource, DataSet))
Dim colCount As Integer = ds.Tables(0).Columns.Count
Dim colWidth As Integer = (rep.PageWidth - (rep.Margins.Left + rep.Margins.Right)) / colCount
' Create a table to represent headers
Dim tableHeader As New XRTable()
tableHeader.Height = 20
tableHeader.Width = (rep.PageWidth - (rep.Margins.Left + rep.Margins.Right))
Dim headerRow As New XRTableRow()
headerRow.Width = tableHeader.Width
tableHeader.Rows.Add(headerRow)
tableHeader.BeginInit()
' Create a table to display data
Dim tableDetail As New XRTable()
tableDetail.Height = 20
tableDetail.Width = (rep.PageWidth - (rep.Margins.Left + rep.Margins.Right))
Dim detailRow As New XRTableRow()
detailRow.Width = tableDetail.Width
tableDetail.Rows.Add(detailRow)
tableDetail.EvenStyleName = "EvenStyle"
tableDetail.OddStyleName = "OddStyle"
tableDetail.BeginInit()
' Create table cells, fill the header cells with text, bind the cells to data
For i As Integer = 0 To colCount - 1
Dim headerCell As New XRTableCell()
headerCell.Width = colWidth
headerCell.Text = ds.Tables(0).Columns(i).Caption
Dim detailCell As New XRTableCell()
detailCell.Width = colWidth
detailCell.DataBindings.Add("Text", Nothing, ds.Tables(0).Columns(i).Caption)
If i = 0 Then
headerCell.Borders = DevExpress.XtraPrinting.BorderSide.Left Or DevExpress.XtraPrinting.BorderSide.Top Or DevExpress.XtraPrinting.BorderSide.Bottom
detailCell.Borders = DevExpress.XtraPrinting.BorderSide.Left Or DevExpress.XtraPrinting.BorderSide.Top Or DevExpress.XtraPrinting.BorderSide.Bottom
Else
headerCell.Borders = DevExpress.XtraPrinting.BorderSide.All
detailCell.Borders = DevExpress.XtraPrinting.BorderSide.All
End If
' Place the cells into the corresponding tables
headerRow.Cells.Add(headerCell)
detailRow.Cells.Add(detailCell)
Next i
tableHeader.EndInit()
tableDetail.EndInit()
' Place the table onto a report's Detail band
rep.Bands(BandKind.PageHeader).Controls.Add(tableHeader)
rep.Bands(BandKind.Detail).Controls.Add(tableDetail)
End Sub