我目前有一个系统设置,用户可以使用 GUI“构建”他们自己的 SQL 查询。
我需要在水晶报表、报表查看器或 Telerik 报表等报表中显示结果。
因为我不知道查询会返回哪些列(因为用户可以完全控制要选择的列),所以我需要知道是否可以在报告中显示这些数据。
所以我的问题是:是否可以在不知道实际返回/显示哪些列的情况下在报告控件中显示查询结果?如何?
我目前有一个系统设置,用户可以使用 GUI“构建”他们自己的 SQL 查询。
我需要在水晶报表、报表查看器或 Telerik 报表等报表中显示结果。
因为我不知道查询会返回哪些列(因为用户可以完全控制要选择的列),所以我需要知道是否可以在报告中显示这些数据。
所以我的问题是:是否可以在不知道实际返回/显示哪些列的情况下在报告控件中显示查询结果?如何?
Web 应用程序还是桌面?
我不认为这正是您正在寻找的,但在网络应用程序中,我之前使用过类似以下内容:
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 扩展名,它会打开一个 html 表格 - 格式和一切 - 所以你可以轻松地提供一个在 excel 中打开的选项。
对于桌面,您可以将列添加到数据网格,然后添加行或在浏览器窗口中打开 hmtl。
对于经典 ASP,实际上还有另一个 SO 答案正是您所需要的: