Динамически генерировать столбцы в RDLC
Я пытаюсь создать отчет RDLC в ASP.NET, где столбцы моего набора данных будут динамическими и будут определены только во время выполнения.
Я сделал функцию, которая возвращает DataTable, и выбрав эту функцию в мастере отчетов RDLC,Я могу сгенерировать свой отчет успешно.
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;
}
Но если я внесу небольшое изменение в функцию, чтобы моя таблица данных стала действительно динамичной, заполнив столбцы из базы данных, моя функция не отобразится в мастере отчетов.
Это моя измененная функция
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;
}
Видите ли, единственное изменение, которое я внес в функцию, - это запрос из базы данных и создание столбцов набора данных отчета в цикле, который выполняет итерацию по данным базы данных. Но из-за этого изменения моя функция не отображается в мастере отчетов. Если я опущу код, он появится снова.
Я могу использовать эту функцию для создания GridView, но проблема в отчетах RDLC.
Моя цель состоит в том, чтобы создать отчет с данными, используя результаты базы данных. Пожалуйста, помогите мне.