点击一个按钮,响应报表,生成一个.PDF文件。直接连接数据源没有问题。但我想实现以下这个思路:
在按钮所在的这个页面上,我传了一个ID值过来,我想点击按钮响应报表是,在报表里取得这个ID值,然后查询数据库,读出相关的数据值,然后把这些数据值绑定到报表相关的字段里,然后导出为.PDF文件。我查了很多资料都没有结果。是不是我的这种思路还不能在CrystalReport控件里实现呢?

解决方案 »

  1.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;using System.Data.SqlClient;namespace WebApplication1
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected CrystalDecisions.Web.CrystalReportViewer CR1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    string coon_str = "server=localhost;database=pubs;uid=sa;pwd=";
    SqlConnection coon = new SqlConnection(coon_str);
    coon.Open();

    aaaa a1 = new aaaa();
    DataSet ds = new DataSet();

    SqlDataAdapter da = new SqlDataAdapter("SELECT stor_id,stor_name,stor_address FROM stores", coon);
    da.Fill(ds, "stores"); a1.SetDataSource(ds.Tables["stores"]);
    CR1.ReportSource = a1; DataBind(); } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }
      

  2.   

    是绝对可以的,在这个按钮中响应事件:
    function onPrint(){
    openWindow("../GetReport.asp?url=lns/lns.rpt&sf="+
    getEncodeStr("{LNS_MASTER.ID_NO}=\""+ ID+"\""),
    0, 1, 0, 1, 0, 760, 540);
    }
    上面的代码中GetReport.asp就是报表视图的调用文件,lns/lns.rpt就是报表的所在位置,LNS_MASTER.ID_NO就是要传入报表数据的主表关键字, ID为按钮响应时所要传来的值。