装载水晶报表的webfrom.aspx中添加如下代码:
解决弹出应用DataSet弹出登陆界面的问题。
protected void Page_Load(object sender, EventArgs e)
{//建立数据库连接
DataSet Dataset1 = new DataSet();
SqlConnection sqlCon = new SqlConnection(DBConfig_sql);sqlAd.Fill(Dataset1, "Orders");
//填充数据库
CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReportPush.rpt"));CrystalReportViewer1.DataBind()
}
多表版本:
protected void Page_Load(object sender, EventArgs e)
{
/*
在【推拉之间】没有说这个xsd,是因为当时没讲到细节操作。说了很难理解。
这个xsd,是我们自己构造的,做个比喻吧:就是xsd比作个一个架子,它负责
把水晶报表撑起来,但是是空的,没有内容我们用 PUSH模式,把数据塞给它,
把架子塞满,这样水晶报表也就能呈现出效果来.
*/
//使用 PUSH模式的优点就在此,可以自由组合SQL
string Orders = "Select * FROM Orders";
string Customers = "Select * from Customers";
string OrderDetails = "Select * from [Order Details]";
//连接字串
string DBConfig_sql = @"Data Source=.;Initial Catalog=Northwind;User ID=sa;Password=sasa";
//创建我们的DataSet1实例
DataSet DataSet1 = new DataSet();
SqlConnection sqlCon = new SqlConnection(DBConfig_sql);
SqlDataAdapter sqlAd = new SqlDataAdapter();
//填充dt1
//前提是表名称和字段名(需要在SQL中使用as别名的方式跟xsd中设计的字段名一致)都要一致
SqlCommand sqlCmd3 = new SqlCommand(OrderDetails, sqlCon);
sqlAd.SelectCommand = sqlCmd3;
sqlAd.Fill(DataSet1, "Order Details");
SqlCommand sqlCmd2 = new SqlCommand(Customers, sqlCon);
sqlAd.SelectCommand = sqlCmd2;
sqlAd.Fill(DataSet1, "Customers");
SqlCommand sqlCmd = new SqlCommand(Orders, sqlCon);
sqlAd.SelectCommand = sqlCmd;
sqlAd.Fill(DataSet1, "Orders");
CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReportPush.rpt"));
//注意此处必需指明Dataset中的表的名称,否则会提示“您请求的报表需要更多信息.”
CrystalReportSource1.ReportDocument.SetDataSource(DataSet1);
//{?}中的参数可以不用赋值,即使赋了值也不起作用。
// CrystalReportSource1.ReportDocument.ParameterFields["Parm"].CurrentValues.AddValue("1234567");
//CrystalReportSource1.ReportDocument.ParameterFields["title"].CurrentValues.AddValue("这时推模式的报表样例!");
CrystalReportSource1.DataBind();
CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind();
}