2009-05-16 9 views
1

Je crée un rapport local. En raison de certaines limitations de la propriété Hidden, j'ai besoin de générer dynamiquement le rapport.Générer dynamiquement RDLC - Ce qui m'empêche d'utiliser un StringBuilder pour générer le code XML

J'ai trouvé de la documentation here.

Le contrôle ReportViewer a besoin d'un flux.

Je n'aime pas vraiment la méthode utilisée dans la documentation. Et la construction d'un XmlDocument n'est pas très lisible imo.

Y at-il quelque chose qui me empêche de le faire comme ça

class Program { static void Main (string [] args) { GenerateReport(); }

static void GenerateReport(){   
     StringBuilder reportXml = new StringBuilder(); 

     reportXml.Append("<Report>"); 
     reportXml.Append("<PageHeight>8.5in</PageHeight>");    
     reportXml.Append("</Report>");   

     XmlDocument xmlDocument = new XmlDocument(); 

     xmlDocument.LoadXml(reportXml.ToString()); 

     xmlDocument.Save(@"C:\test.xml"); 
     xmlDocument.Save(Console.Out); 

     Console.ReadLine(); 
    } 
} 
+0

Avez-vous essayé cela et avez-vous rencontré un problème? Si oui, quel était le problème? – ChrisF

+0

Semble raisonnable pour moi. –

+0

@jeffamaphone - moi aussi, c'est pourquoi j'ai demandé s'il y avait un problème spécifique. – ChrisF

Répondre

1

simple: si vous utilisez cette méthode, des opérations spéciales dans le processeur détectera que le ws Wrong classe utilisées pour générer cette chaîne, à quel point la police sont appelés d'exactitude. Sérieusement, il n'y a rien qui vous empêche de le faire exactement de cette façon; en fait, sous les couvertures, vous pouvez parier qu'il y a du code dans le générateur XML plus compliqué qui fait quelque chose comme ça. Quand vous y parvenez, XML est juste une chaîne, et aussi longtemps que c'est bien formé, cette chaîne sera la même, peu importe comment vous le construisez.

L'avantage des autres classes est qu'elles sont plus simples et plus flexibles lorsque vous souhaitez générer du code XML plus complexe.


Il existe presque infiniment de classes qui peuvent générer du code XML ou XHTML. Cherchez-en un qui a une "interface fluide". Dans un C++ - comme la langue, il pourrait ressembler à:

XMLOutStream foo("filename.xml); 
    foo.group("Top","attr=val") 
    .group("Next") 
    .line("Another", "attr=val") ; 

pour générer

<Top> 
    <Next attr="val"> 
     <Another attr="val" /> 
    </Next> 
</Top> 

Je cherchais quelque chose de similaire pour HTML dans this question.

+0

Eh bien c'est juste un petit échantillon, le Xml que je vais construire va être plus complexe et plus grand. Mais est-ce moi ou le fait de cette façon plus lisible que d'utiliser les autres classes. – user31571

+0

C'est sûr. Je chercherais d'autres cours. –

Questions connexes