代码如下:
                        string connstr="Password=hnj2007;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=.";
SqlConnection mysqlconn=new SqlConnection(connstr); 
mysqlconn.Open();
DataSet mydataset=new DataSet();
SqlDataAdapter myadpter=new SqlDataAdapter("select * from userlist" ,mysqlconn);

myadpter.Fill(mydataset); 
CrystalReport2 cr=new CrystalReport2(); 
cr.SetDataSource(mydataset); 

//this.dataGrid1.DataSource=mydataset; 

this.crystalReportViewer1.ReportSource=cr;
this.crystalReportViewer1.RefreshReport(); 

解决方案 »

  1.   


            string connStr = ConfigurationSettings.AppSettings["lj"].ToString();  //从web.cofig获取连接字符
            SqlDataSource datasource = new SqlDataSource(connStr, "select * from yang");
            ReportDocument doc = new ReportDocument();
            TableLogOnInfo logininfo = new TableLogOnInfo();
            string path;        
            path = Server.MapPath("report1.rpt");
            doc.Load(path);
            //a, b, c, d从web.cofig获取强制连接的服务器,库,用户,密码,主要用来强制连接
            string a, b, c, d;
            a = System.Configuration.ConfigurationManager.AppSettings[0];
            b = System.Configuration.ConfigurationManager.AppSettings[1];
            c = System.Configuration.ConfigurationManager.AppSettings[2];
            d = System.Configuration.ConfigurationManager.AppSettings[3];
            logininfo.ConnectionInfo.ServerName = a;
            logininfo.ConnectionInfo.DatabaseName = b;
            logininfo.ConnectionInfo.UserID = c;
            logininfo.ConnectionInfo.Password = d;        try
            {
                doc.Database.Tables[0].ApplyLogOnInfo(logininfo);
                doc.Database.Tables[0].SetDataSource(datasource.Select(DataSourceSelectArguments.Empty));
                CrystalReportViewer1.ReportSource = doc;
            }
            catch
            {
                Response.Write("<script>alert('输出报表失败,请检查输入信息或网络!');</script>");
            }
    这是一个例子,楼主参考一下吧。
      

  2.   

    运行没什么错误吧!
    this.crystalReportViewer1.RefreshReport();是不是由于这句话你又刷新了,所以看不到数据了!把这句去掉试试!
     
      

  3.   

    去掉了this.crystalReportViewer1.RefreshReport();也不行。
      

  4.   

    那你确定dataset里面有数据吗?运行的时候有没有报错!还有就是有没有把水晶报表文件的路径修改过?(就是你在添加水晶报表的时候有没有修改路径)?
    先确定下以上这些后再试试下面这样!
    CrystalReport2 cr=new CrystalReport2(); 
    cr.SetDataSource(mydataset.Tables[0]);
     
      

  5.   

    楼主,你没有加载报表啊,也就是这样的一句话
    path = Server.MapPath("report1.rpt");
    doc.Load(path);
    如果按照你上面的代码,这个水晶报表是什么都不会显示的
      

  6.   

    path = Server.MapPath("report1.rpt"); 
    doc.Load(path);