【问题标题】:How to show crystal report from GridView?如何从 GridView 显示水晶报表?
【发布时间】:2010-12-03 06:34:02
【问题描述】:
我有一个带有一个 ButtonField 列的 GridView,如下所示:
我已经使用一个名为 ID 的输入参数创建了基于存储过程的 Crystal Report。
我将 ID 保存在 GridView 的 DataKeyNames 中。
所以当用户点击Gridview中的打印按钮时,相应的水晶报表就会显示出来。
热切期待您的实用提示。
【问题讨论】:
标签:
c#
asp.net
custom-server-controls
【解决方案1】:
没有将gridview 导出到水晶报表的直接方法。
使用数据集调用相同的查询,将数据集传递给报表。
【解决方案2】:
我得到了答案。
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();
}
}