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