如何在GridView中显示水晶报表?

发布于 2024-10-05 09:13:30 字数 198 浏览 5 评论 0原文

我有一个带有一个 ButtonField 列的 GridView,如下所示: 我已经基于存储过程创建了 Crystal Report,其中包含一个名为 ID 的输入参数。 我将 ID 保存在 GridView 的 DataKeyNames 中。

这样当用户点击Gridview中的打印按钮时,相应的水晶报表就会被显示出来。

热切等待您的有用提示。

I have a GridView with one ButtonField column like this:

I have already Created Crystal Report based On stored procedure with one input Parameter called ID.
I kept the ID in DataKeyNames of the GridView.

So when the user click the print button in the Gridview, the corresponding crystal reports to be displayed.

Eagerly waiting for your useful tips.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

驱逐舰岛风号 2024-10-12 09:13:30

没有直接的方法将gridview导出到水晶报表。

使用数据集调用相同的查询,将数据集传递到报告。

There is no direct way to export gridview to crystal report.

Call the same query using dataset, pass dataset to report.

笑脸一如从前 2024-10-12 09:13:30

我得到了答案。

        if (e.CommandName == "printReport")      
        {
            int ID = Convert.ToInt32(GridView1.SelectedDataKey.Value);
            try
            {
                CrystalDecisions.CrystalReports.Engine.ReportDocument rpt =
                            new CrystalDecisions.CrystalReports.Engine.ReportDocument();

                string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
                string[] str = conn.Split(';');
                string server = str[0].Substring(str[0].IndexOf(" = ") + 3);
                string database = str[1].Substring(str[1].IndexOf(" = ") + 3);
                string userid = str[2].Substring(str[2].IndexOf(" = ") + 3);
                string password = str[3].Substring(str[3].IndexOf(" = ") + 3);

                rpt.Load(Server.MapPath("~/Engineering/Reports/Report.rpt"));

                for (int i = 0; i < rpt.DataSourceConnections.Count; i++)
                    rpt.DataSourceConnections[i].SetConnection(server, database, userid, password);
                rpt.SetParameterValue(0, ID);

                rpt.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, "Report");
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }

        }

I got the answer.

        if (e.CommandName == "printReport")      
        {
            int ID = Convert.ToInt32(GridView1.SelectedDataKey.Value);
            try
            {
                CrystalDecisions.CrystalReports.Engine.ReportDocument rpt =
                            new CrystalDecisions.CrystalReports.Engine.ReportDocument();

                string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
                string[] str = conn.Split(';');
                string server = str[0].Substring(str[0].IndexOf(" = ") + 3);
                string database = str[1].Substring(str[1].IndexOf(" = ") + 3);
                string userid = str[2].Substring(str[2].IndexOf(" = ") + 3);
                string password = str[3].Substring(str[3].IndexOf(" = ") + 3);

                rpt.Load(Server.MapPath("~/Engineering/Reports/Report.rpt"));

                for (int i = 0; i < rpt.DataSourceConnections.Count; i++)
                    rpt.DataSourceConnections[i].SetConnection(server, database, userid, password);
                rpt.SetParameterValue(0, ID);

                rpt.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, "Report");
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }

        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文