Générer des colonnes dynamiquement dans RDLC

Je suis en train de générer un RDLC rapport à ASP.NET où les colonnes de mon jeu de données qui sera dynamique et déterminée qu'au moment de l'exécution.

J'ai fait une fonction qui retourne une Table de données, et par la sélection de cette fonction dans la RDLC de l'assistant rapport, je peux générer mon rapport avec succès.

    public DataTable GetTable()
    {
        //Here we create a DataTable with four columns.
        DataTable table = new DataTable();
        table.Columns.Add("Dosage", typeof(int));
        table.Columns.Add("Drug", typeof(string));
        table.Columns.Add("Patient", typeof(string));
        table.Columns.Add("Date", typeof(DateTime));
        table.Columns.Add("testColumn", typeof(DateTime));

        //Here we add five DataRows.
        table.Rows.Add(25, "Indocin", "David", DateTime.Now);
        table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
        table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
        table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
        table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
        return table;
    }

Générer des colonnes dynamiquement dans RDLC

Générer des colonnes dynamiquement dans RDLC

Mais, si je fais une légère modification de la fonction de façon à ce que ma datatable est vraiment dynamique, alimenter les colonnes de la base de données, ma fonction n'apparaît pas dans le rapport de l'assistant.

C'est ma changé fonction

    public DataTable GetTable2()
{
//Here we create a DataTable with four columns.
DataTable table = new DataTable();
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
table.Columns.Add("testColumn", typeof(DateTime));
SqlConnection connection = new SqlConnection();
connection = Connection.getConnection();
connection.Open();
string tableName = "";
tableName += "Subject";
string Query = "select * from " + tableName + " where Status = 0;";
SqlDataAdapter da = new SqlDataAdapter(Query, connection);
DataSet ds = new DataSet();
da.Fill(ds);
DataRowCollection collection = ds.Tables[0].Rows;
foreach (DataRow row in collection)
{
//Here we add five DataRows.
table.Rows.Add(25, "Indocin", "David", DateTime.Now);
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
}
connection.Close();
return table;
}

Vous voyez, la seule modification que j'ai apportée à la fonction est l'interrogation de la base de données et de générer le rapport dataset colonnes à l'intérieur de la boucle qui parcourt la base de données.
Mais en raison de ce changement, ma fonction n'apparaît pas dans le Rapport de l'Assistant. Si je omettre le code, il apparaît de nouveau.

Je peux utiliser cette fonction pour générer un GridView bien, mais le problème est avec RDLC rapports.

Mon objectif est de générer le rapport datatable à l'aide de résultats de base de données. S'il vous plaît aider moi.

OriginalL'auteur Shuaib | 2015-03-06