首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代数据集,并将7列中的5列的值应用于活动报表中的textboxs

迭代数据集,并将7列中的5列的值应用于活动报表中的textboxs
EN

Stack Overflow用户
提问于 2016-11-04 13:16:43
回答 2查看 831关注 0票数 0

我想迭代一个dataSet,并将每个值应用到活动报表中的文本框中。我不知道这些文本框是否需要是一个组/标题区域或什么。我知道下面的代码只是检索第一行。如何迭代所有行并将数据应用到活动报表能够在组部分中获得多行的文本框中。

代码语言:javascript
复制
    Private Sub rptUserCellPhoneSwap_ReportStart(sender As Object, e As System.EventArgs) Handles Me.ReportStart
    Me.PageSettings.Orientation = GrapeCity.ActiveReports.Document.Section.PageOrientation.Landscape
    DateTxt.Text = Now.ToShortDateString & " " & Now.ToShortTimeString
    Dim DataSet = GrabInformation(FirstName, LastName)
    UserTxt.Text = LastName + ", " + FirstName

    'For Each dr As DataRow In DataSet.Tables(0).Rows
    '    OldIMEITxt.Text = DataSet.Tables(0).Rows(dr("OldIMEI")).ToString
    '    NewIMEITxt.Text = DataSet.Tables(0).Rows(dr("NewIMEI")).ToString
    '    ReasonTxt.Text = DataSet.Tables(0).Rows(dr("SwapReason")).ToString
    '    DateRepTxt.Text = DataSet.Tables(0).Rows(dr("DateSwapped")).ToString
    '    ValueTxt.Text = DataSet.Tables(0).Rows(dr("EstimatedAccumulatedValue")).ToString

    'Next

    If Not IsNothing(DataSet) Then
        If DataSet.Tables(0).Rows.Count > 0 Then
            OldIMEITxt.Text = DataSet.Tables(0).Rows(0)("OldIMEI")
            NewIMEITxt.Text = DataSet.Tables(0).Rows(0)("NewIMEI")
            ReasonTxt.Text = DataSet.Tables(0).Rows(0)("SwapReason")
            DateRepTxt.Text = DataSet.Tables(0).Rows(0)("DateSwapped")
            ValueTxt.Text = DataSet.Tables(0).Rows(0)("EstimateAccumulatedValue")
        End If
    End If



End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-05 04:35:54

ActiveReports可以从您的DataSet中读取数据,而无需在代码中添加额外的循环。如果将数据表返回到报表对象的DataSource属性,则只需正确设置TextBox控件和GroupHeader部分的DataField属性以在报表中显示数据即可。呈现引擎将自动遍历所有数据行:

代码语言:javascript
复制
    Private Sub SectionReport1_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart
    ' bind TextBox controls to fields in table
    Me.txtF1.DataField = "F1"
    Me.txtF2.DataField = "F2"
    ' set the grouping field
    Me.GroupHeader1.DataField = "F2"
    ' set the report data source
    Me.DataSource = GetSampleData().Tables(0)
End Sub

Private Function GetSampleData() As DataSet
    Dim ds = New DataSet()
    Dim dt = ds.Tables.Add("TestData")
    dt.Columns.Add("F1")
    dt.Columns.Add("F2")
    dt.Rows.Add("1", "0")
    dt.Rows.Add("2", "0")
    dt.Rows.Add("1", "1")
    dt.Rows.Add("2", "1")
    Return ds
End Function

如果您喜欢在“半自动模式”中逐行读取数据,那么FetchData事件处理程序可以在这里提供帮助:

代码语言:javascript
复制
    Dim i As Integer
Dim dt As DataTable = Nothing

Private Sub SectionReport2_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart
    i = 0
    ' bind TextBox controls to fields in table
    Me.txtF1.DataField = "F1"
    Me.txtF2.DataField = "F2"
    ' set the grouping field
    Me.GroupHeader1.DataField = "F2"
    dt = GetSampleData().Tables(0)
End Sub

Private Sub SectionReport2_DataInitialize(sender As Object, e As EventArgs) Handles MyBase.DataInitialize
    Me.Fields.Add("F1")
    Me.Fields.Add("F2")
End Sub

Private Sub SectionReport2_FetchData(sender As Object, eArgs As FetchEventArgs) Handles MyBase.FetchData
    If dt.Rows.Count > i Then
        Me.Fields("F1").Value = dt.Rows(i)(0)
        Me.Fields("F2").Value = dt.Rows(i)(1)
        eArgs.EOF = False
    Else
        eArgs.EOF = True
    End If
    i = i + 1
End Sub

Private Function GetSampleData() As DataSet
    Dim ds = New DataSet()
    Dim _dt = ds.Tables.Add("TestData")
    _dt.Columns.Add("F1")
    _dt.Columns.Add("F2")
    _dt.Rows.Add("1", "0")
    _dt.Rows.Add("2", "0")
    _dt.Rows.Add("3", "1")
    _dt.Rows.Add("4", "1")
    Return ds
End Function

此外,我建议查看在ActiveReports安装包中使用运行时数据绑定的示例。下面链接到官方站点上的示例描述:未绑定数据

票数 1
EN

Stack Overflow用户

发布于 2016-11-04 14:02:57

这就是如何循环获得所有行的方法,但在本例中,文本框中留下的唯一数据将是最后一行。

如果要连接指定文本框中的每一行信息,则应该具有如下信息。

代码语言:javascript
复制
OldIMEITxt.Text = OldIMEITxt.Text & dr("OldIMEI")

环路码

代码语言:javascript
复制
For each dr as Datarow in DataSet.Tables(0).Rows
   OldIMEITxt.Text = dr("OldIMEI")
   NewIMEITxt.Text = dr("NewIMEI")
   ReasonTxt.Text = dr("SwapReason")
   DateRepTxt.Text = dr("DateSwapped")
   ValueTxt.Text = dr("EstimateAccumulatedValue")
Next
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40423678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档