2010-10-18 19 views
3

Quelles sont les conditions requises pour qu'une source de données personnalisée soit répertoriée dans la liste déroulante 'Source de données' lors de l'ajout d'un dataset à un rapport .rdlc dans Report Viewer 2010?Configuration requise pour la source de données au moment du design dans Report Viewer 2010

Comme on peut le voir à partir de la capture d'écran, pour une raison quelconque, il répertorie les sources potentielles provenant d'une variété d'assemblages référencés, mais je ne vois pas de modèle évident pour les sélectionner.

alt text

Le « GeneralDataSet » est logique que c'est une classe DataSet fortement typé, mais je suis assez sûr que la plupart des autres ne sont pas, mais la boîte de dialogue de conception les listes encore.

Je cherche à rouler ma propre source de données personnalisées et je préfère que ce soit sélectionnable dans cette liste.

Répondre

0

Je pense qu'il scanne votre fichier de projet à la recherche de méthodes qui renvoient des listes <> et ainsi de suite.

donc quelque chose comme:

public class Person 
{ 
    public string name { get; set; } 
    public int age { get; set; } 
} 

public class GetPeople 
{ 
    public List<Person> GetPeopleList() 
    { 
     return null; 
    } 

    public IEnumerable<Person> GetPeopleIEnumerable() 
    { 
     return null; 
    } 

    public IQueryable<Person> GetPeopleIQueryable() 
    { 
     return null; 
    } 
} 

Les trois montrent, donc faites votre choix. (Le code est juste écrasé, ignorez les mauvais noms/pratiques :))

Mais lorsque vous utilisez un ReportViewer, vous devrez définir manuellement les jeux de données. En le sélectionnant dans le rapport à partir de ce que j'ai trouvé, il me dit simplement à quelles données il faut s'attendre. Donc, ajoutez un ObjectDataSource ou simplement le définir dans le code derrière.

0

Je remarqué l'ensemble de données ne semble pas si la source est exposé comme propriété et non une méthode.

Cela signifie que cette source de données ne peut pas être sélectionnée.

public class FooData 
{ 
    public List<string> Data {get;set;} 
} 

mais cela apparaîtra comme une source de données

public class FooData 
{ 
    public List<string> GetData(); 
} 
0

Je viens d'avoir un problème avec cela aussi,

ma classe était de retour listes mais ne figurerait pas dans la liste des sources de données . J'ai ensuite ajouté un constructeur sans paramètre et il a commencé à apparaître (il n'y en avait pas auparavant). Je suppose que c'est ce que le Reportviewer peut créer et en faire une instance.

par exemple:

public MyObject() 
{ 
} 
+0

Cela aurait du sens si vous aviez déjà un constructeur qui nécessitait des paramètres –

0

J'ai eu un problème similaire avec des listes personnalisées qui héritent de la liste. Vous pouvez contourner ce problème si votre système vous permet d'hériter sans utiliser d'interface. Le nôtre ne l'est pas.

Le projet contenant cette classe apparaît dans la liste déroulante DataSource, et la classe elle-même apparaît dans le menu déroulant DataSet:

public class AccountList : List<AccountData> 
{} 

Cette classe ne sera pas apparaître comme un Dataset, ce qui empêche son projet d'apparaître comme DataSource (notez le « I » devant AccountData):

public class AccountList : List<IAccountData> 
{} 

Ceci est une douleur parce que d'autres aspects de notre système exigent que les listes d'hériter d'une interface et non une classe concrète. Je ne sais pas pourquoi ça ne marche pas.