使用C#中的动态数据填充Crystal Reports等控件

时间:2012-04-23 08:03:58

标签: c# mysql crystal-reports

我目前有一个系统设置,用户可以使用GUI“构建”自己的SQL查询。

我需要在水晶报告,报告查看器或Telerik报告等报告中显示结果。

因为我不知道从查询中返回哪些列(因为用户可以完全控制要选择的列),所以我需要知道是否可以在报告中显示这些数据。

所以我的问题是:是否有可能在报告控件中显示查询结果而不知道实际将返回/显示哪些列?怎么样?

1 个答案:

答案 0 :(得分:1)

网络应用程序或桌面?

我认为这不是您正在寻找的内容,但在网络应用中,我之前使用过以下内容:

SqlDataReader reader = cmd.ExecuteReader();
List<string> cols = new List<string>();
for (int i = 0; i < reader.FieldCount; i++)
{
    cols.Add(reader.GetName(i));
}

StringBuilder sb = new StringBuilder();
sb.Append("<table><tr>");
foreach (string s in cols)
{
    sb.Append("<th>"+s+"</th>");
}
sb.Append("</tr>");

while (reader.Read())
{
    sb.Append("<tr>");
    foreach (string s in cols)
    {
        sb.Append("<td>"+reader[s]+"</td>");
    }
sb.Append("</tr>");

}
sb.Append("</table>");

不知道这是否是最佳方法。如果你给它一个excel扩展名 - 格式化和所有东西 - excel会打开一个html表,所以你可以很容易地提供一个open in excel选项。

对于桌面,您可以在数据网格中添加列,然后在浏览器窗口中行或打开hmtl。

对于经典ASP,实际上还有另一个SO答案正是您所需要的:

https://stackoverflow.com/a/1662143/359135