IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Local Report et Object Data Source


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Local Report et Object Data Source
    Bonjour,

    J'ai un problème avec DataSource Objet de mes reports, plus précisément avec les propriétés de type List(of myObject).

    Voici un petit exemple

    Ma Class1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <Serializable>
    Public Class Class1
        Private _id As Integer
        Public Property ID() As Integer
            Get
                Return _id
            End Get
            Set(ByVal value As Integer)
                _id = value
            End Set
        End Property
     
        Private _lstClass As List(Of Class2)
        Public Property lstClass() As List(Of Class2)
            Get
                Return _lstClass
            End Get
            Set(ByVal value As List(Of Class2))
                _lstClass = value
            End Set
        End Property
     
     
        Public Sub New()
            _id = 1
     
            _lstClass = New List(Of Class2)
            _lstClass.Add(New Class2 With {.Name = "test1"})
            _lstClass.Add(New Class2 With {.Name = "test2"})
            _lstClass.Add(New Class2 With {.Name = "test3"})
        End Sub
     
    End Class
    Ma Class2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <Serializable>
    Public Class Class2
        Private _Name As String
        Public Property Name() As String
            Get
                Return _Name
            End Get
            Set(ByVal value As String)
                _Name = value
            End Set
        End Property
     
        Public Sub New()
     
        End Sub
     
    End Class
    Class1 possède donc une List(of Class2)

    Dans mon rapport je créé un dataset1 qui utilise Class1 ce qui me permet de visualiser ma propriété ID jusque la pas de problème.

    Ensuite je créé un dataset2 qui utilise Class1(lstClass) qui correspond donc à ma List(of Class2) contenu dans ma Class1.

    j'utilise ce dataset sur un tableau afin qu'il m'affiche toute la liste et c'est la que je bloque, le rapport n'affiche aucune données...

    Mes classes sont bien sérialisable
    J'ai bien un constructeur sans paramètre dans chacune des classe
    Tous les attributs on des accesseurs public

    La dataSource du report est bien initialisée (code ci-dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Private Sub RadForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim c1 As Class1 = New Class1
            Me.Class1BindingSource.DataSource = c1
            Me.ReportViewer1.RefreshReport()
        End Sub
    Est-ce que quelqu'un aurait une idée de ce qui pourrait bloquer le traitement ?

    Merci d'avance

    Cordialement

    Max

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Si ton dataset2 utilise lstClass comme datasource, alors c'est normal que
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim c1 As Class1 = New Class1
    Me.Class1BindingSource.DataSource = c1
    ne charge pas tes données. Tu devrais avoir:
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim c1 As Class1 = New Class1
    Me.Class1BindingSource.DataSource = c1.lstClass() 
    Me.ReportViewer1.RefreshReport()

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour ta réponse, et désolé d'y répondre que maintenant mais je ne sais pour quelle raison je n'avais plus accès à mon post...

    Normalement je n'ai pas besoin de lui passer une deuxième datasource car la liste est comprise dans la première et il est donc capable d'aller la chercher.

    Voici la définition de mon dataset dans le report
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
      <DataSets>
        <DataSet Name="DataSet2">
          <Query>
            <DataSourceName>SoftKang</DataSourceName>
            <CommandText>/* Local Query */</CommandText>
          </Query>
          <Fields>
            <Field Name="Name">
              <DataField>Name</DataField>
              <rd:TypeName>System.String</rd:TypeName>
            </Field>
          </Fields>
          <rd:DataSetInfo>
            <rd:DataSetName>SoftKang</rd:DataSetName>
            <rd:TableName>Class1</rd:TableName>
            <rd:ObjectDataSourceSelectMethod>lstClass</rd:ObjectDataSourceSelectMethod>
            <rd:ObjectDataSourceType>SoftKang.Class1, SoftKang, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</rd:ObjectDataSourceType>
          </rd:DataSetInfo>
        </DataSet>
    Dans ce bout de code on voit bien que le dataset2 a pour datasource un objet Class1 et qu'il lui faut utiliser la propriété lstClass

    et voici l'affectation de la datasource dans le designer de la page qui contient le reportviewer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
            ReportDataSource1.Name = "DataSet1"
            ReportDataSource1.Value = Me.Class1BindingSource
            ReportDataSource2.Name = "DataSet2"
            ReportDataSource2.Value = Me.Class1BindingSource
            Me.ReportViewer1.LocalReport.DataSources.Add(ReportDataSource1)
            Me.ReportViewer1.LocalReport.DataSources.Add(ReportDataSource2)
            Me.ReportViewer1.LocalReport.ReportEmbeddedResource = "SoftKang.Report2.rdlc"
            Me.ReportViewer1.Location = New System.Drawing.Point(0, 0)
            Me.ReportViewer1.Name = "ReportViewer1"
            Me.ReportViewer1.Size = New System.Drawing.Size(492, 335)
            Me.ReportViewer1.TabIndex = 0
            '
            'Class1BindingSource
            '
            Me.Class1BindingSource.DataSource = GetType(SoftKang.Class1)

    Cordialement

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2009, 10h10
  2. Réponses: 5
    Dernier message: 19/05/2009, 12h08
  3. Object data source liée à une propriété d'un usrctrl
    Par Immobilis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/05/2008, 13h52
  4. reporting services - data source dans url
    Par marie253 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/05/2007, 16h16
  5. [Reporting Services] Deux shared data source
    Par oolon dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/03/2007, 21h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo