Generieren Sie Spalten dynamisch in RDLC

Ich versuche, einen RDLC-Bericht in ASP.NET zu generieren, in dem die Spalten meines Datasets dynamisch sind und nur zur Laufzeit ermittelt werden.

Ich habe eine Funktion erstellt, die eine DataTable zurückgibt, und indem ich diese Funktion im RDLC-Berichtsassistenten auswähle,Ich kann meinen Bericht erfolgreich erstellen.

    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;
    }

Aber wenn ich die Funktion geringfügig ändere, sodass meine Daten wirklich dynamisch sind, indem ich Spalten aus der Datenbank auffülle, wird meine Funktion nicht im Berichtsassistenten angezeigt.

Dies ist meine veränderte Funktion

    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;
    }

Sie sehen, die einzige Änderung, die ich an der Funktion vorgenommen habe, ist das Abfragen von der Datenbank und das Generieren der Berichtsdatensatzspalten innerhalb der Schleife, die die Datenbankdaten durchläuft. Aufgrund dieser Änderung wird meine Funktion jedoch nicht im Berichtsassistenten angezeigt. Wenn ich den Code weglasse, wird er erneut angezeigt.

Ich kann diese Funktion verwenden, um eine GridView zu generieren, aber das Problem liegt in der RDLC-Berichterstellung.

Mein Ziel ist es, den Bericht mit Hilfe der Datenbankergebnisse datierbar zu machen. Bitte hilf mir