【问题标题】:Filling a control like Crystal Reports with dynamic data in C#用 C# 中的动态数据填充像 Crystal Reports 这样的控件
【发布时间】:2012-04-23 08:03:57
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# mysql crystal-reports


    【解决方案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 扩展名,它会打开一个 html 表格 - 格式和一切 - 所以你可以轻松地提供一个在 excel 中打开的选项。

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

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

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

    【讨论】:

    • 感谢您的回答,我会看看这是否适合我。这是一个网络应用程序,但它是 ASP。所以我将不得不使用您的桌面方法来处理 C# 部分。
    • 我在经典 ASP 中多次做过同样的事情。我寻找一个好的参考并更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多