2016-05-12 19 views
0

Ich versuche ReportViewer zu verwenden, um einen Bericht mit einem Dataset zu erstellen, das aus einer Datagridview gefüllt wurde. Ich kann das Dataset auffüllen, aber wenn ich den Bericht ausführe, wird nur die erste Zeile angezeigt. Ich habe unzählige Stunden damit verbracht, zu suchen, und nichts scheint zu funktionieren.VS 2013 ReportViewer zeigt nur die erste Zeile an

  • Ich habe sicher = Erster machen (...) aus meinem Bericht Feldausdruck entfernt wurde
  • Ich denke, das Problem etwas mit dem XML für die Datenmenge zu tun, aber ich bin nicht sehr vertraut mit ihm.
  • Dies ist nur ein Beispiel, sobald ich das herausgefunden habe, kann ich mein Wissen auf mein aktuelles Projekt übertragen.

Hier ist, was ich habe:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
    dgv.Columns.Add("FirstName", "First Name") 
    dgv.Columns.Add("LastName", "Last Name") 
    dgv.Rows.Add("John", "Smith") 
    dgv.Rows.Add("Jane", "Doe") 
    createData() 

End Sub 

Private Sub createData() 

    Dim dt As New DataTable("namesTable") 

    dt.Columns.Add("FirstName") 
    dt.Columns.Add("LastName") 

    For Each row As DataGridViewRow In dgv.Rows 
     dt.Rows.Add(row.Cells(0).Value, row.Cells(1).Value) 
     MsgBox(row.Cells(0).Value & " " & row.Cells(1).Value) 
    Next 
    MsgBox(dt.Rows.Count) 

    DataSet1.Tables.Add(dt) 

    MsgBox(DataSet1.GetXml) 

    Dim DSReport As New ReportDataSource() 
    DSReport.Name = "DataSet1" 
    DSReport.Value = DataSet1.Tables("namesTable") 

    ReportViewer.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local 
    ReportViewer.LocalReport.ReportEmbeddedResource = "Report1.rdlc" 
    ReportViewer.LocalReport.DataSources.Clear() 
    ReportViewer.LocalReport.DataSources.Add(DSReport) 
    ReportViewer.LocalReport.Refresh() 
    ReportViewer.RefreshReport() 

End Sub 

Als ich zum dt Zugabe bin, meine MsgBox Nachricht zeigt mir, richtig, meine beiden Namen. Die MsgBox dt count ist 2, also meine zwei Namen hinzugefügt.

Der Datensatz XML zeigt das, was ich denke, das Problem ist, aber ich weiß nicht, wie es zu beheben:

DataSet1 XML

Der Bericht zeigt dann:

ReportViewer

Danke für jede Hilfe, das macht mich verrückt.

Danke!

Antwort

0

Es sieht so aus, als ob Ihre Datenquelle nicht richtig ist. Verwenden Sie einfach Ihre gerade erstellte Datenmenge. Dieser Code funktioniert bei mir:

 ReportViewerHeader.LocalReport.DataSources.Clear() 
     Dim rds As New Microsoft.Reporting.WebForms.ReportDataSource("namesTable", dt) 
     ReportViewerHeader.LocalReport.ReportPath = "Report1.rdlc" 
     ReportViewerHeader.LocalReport.DataSources.Add(rds) 
     ReportViewerHeader.DataBind() 
     ReportViewerHeader.LocalReport.Refresh() 
+0

Es muss zuerst von dem, was ich verstehe, konvertiert werden. Ich probierte es trotzdem und erhielt die Nachricht "Wert des Typs 'WindowsApplication1.DataSet1' kann nicht in 'Microsoft.Reporting.WinForms.ReportDataSource' umgewandelt werden. – Tim

+0

Ich habe etwas Code aus einem Arbeitsprogramm hinzugefügt, es sollte Ihnen nahe kommen, aber Sie werden wahrscheinlich Ich muss es anpassen. – Chuck

+0

Danke, Chuck. "DataBind" existiert nicht für mich, was hast du dafür importiert, wenn überhaupt? Wenn ich nur den DataBind kommentiere, läuft es, aber der ReportViewer ist komplett leer. Wenn ich RefreshReport hinzufüge() Am Ende des Codes sagt es mir, dass die Datenquelleninstanz für die Datenquelle DataSet1 nicht geliefert wurde. – Tim