Увеличение отчета по разделу раздела по высоте содержимого

Я пытаюсь добавить контент в разделе подробностей ActiveReport, Но высота секции ограничена 2 дюймами. Это берет только (2/0,2 =)10 предметов. Я хочу, чтобы раздел увеличивал свою высоту по мере увеличения содержимого, чтобы он мог принять все элементы. Это похоже на .CanGrow не работает. Код, который я использую, как показано ниже.

Dim lObjSecRpt As New GrapeCity.ActiveReports.SectionReport()
Dim lObjLbl As New GrapeCity.ActiveReports.SectionReportModel.Label()
Dim c As Single = 0.2F

Try

lObjSecRpt.Sections.InsertPageHF()
lObjSecRpt.Sections(0).BackColor = Color.WhiteSmoke
lObjSecRpt.Sections(0).Height = 0.0F

lObjSecRpt.Sections.Insert(1, New GrapeCity.ActiveReports.SectionReportModel.Detail())
lObjSecRpt.Sections(1).BackColor = Color.WhiteSmoke
lObjSecRpt.Sections(1).CanGrow = True

For Each dr As DataRow In mObjDtReport.Rows
    lObjLbl = New GrapeCity.ActiveReports.SectionReportModel.Label()

    lObjLbl.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Left
    lObjLbl.Font = New System.Drawing.Font("Arial", 10, FontStyle.Regular)
    lObjLbl.Location = New PointF(0.0F, c)
    lObjLbl.Height = 0.2F
    lObjLbl.Width = 1.0F
    lObjLbl.Text = CStr(dr("RptObjNam"))
    lObjSecRpt.Sections(1).Controls.Add(lObjLbl)
    c += c
Next

Me.rptViewer.LoadDocument(lObjSecRpt)

1 ответ

Аммар,

В коде вы пытаетесь создавать разделы и добавлять элементы управления в разделы "на лету". Так что это похоже на создание макета отчета во время выполнения. Поскольку вы просто добавляете элементы управления в подробный раздел, событие форматирования для подробного раздела не будет запускаться для каждого элемента управления, поскольку оно не связано с какими-либо данными. Скорее вы просто добавляете к нему элементы управления. Вы можете проверить и пример создания отчетов на лету здесь.

Если вы хотите, чтобы раздел подробностей увеличивался, чтобы показать все добавленные элементы управления, вам нужно будет увеличить его высоту на основе общей высоты элементов управления внутри него. Например, проверьте пример кода ниже, который демонстрирует, как это можно сделать. Вы можете просто добавить этот код в событие Form_Load, чтобы проверить это.

    Dim lObjLbl As New GrapeCity.ActiveReports.SectionReportModel.Label()
Dim c As Single = 0.2F
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim rpt As New GrapeCity.ActiveReports.SectionReport
    rpt.Sections.InsertPageHF()
    rpt.Sections(0).BackColor = Color.Yellow
    rpt.Sections(0).Height = 1.0F
    rpt.Sections.Insert(1, New GrapeCity.ActiveReports.SectionReportModel.Detail())
    rpt.Sections(1).Name = "Detail"
    rpt.Sections("Detail").BackColor = Color.Gainsboro
    rpt.Sections("Detail").CanGrow = True

    Dim i As Integer
    For i = 0 To 20
        Dim lObjLbl As New GrapeCity.ActiveReports.SectionReportModel.Label()
        lObjLbl.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Left
        lObjLbl.Font = New System.Drawing.Font("Arial", 10, FontStyle.Regular)
        lObjLbl.Location = New PointF(0.0F, c)
        lObjLbl.Size = New SizeF(1.0F, 0.2F)
        lObjLbl.Text = "Record: " + i.ToString()
        lObjLbl.BackColor = Color.Aqua
        rpt.Sections("Detail").Controls.Add(lObjLbl)
        c += 0.2
    Next
    Dim height As Double = 0
    For Each control As GrapeCity.ActiveReports.SectionReportModel.ARControl In rpt.Sections("Detail").Controls
        height = height + control.Height
    Next
    rpt.Sections("Detail").Height = height
    Viewer1.LoadDocument(rpt)
End Sub

Надеюсь, это поможет.

Другие вопросы по тегам