创建和使用水晶报表,数据填充问题
public partial class _Default : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e)
{
//从web.config文件中获取数据库连接字符串
string ConnStr = ConfigurationManager.
ConnectionStrings["StudentConnectionString"].ConnectionString;
//使用using语句块,可以达到自动释放连接的作用
using (SqlConnection conn = new SqlConnection(ConnStr))
{
//创建强类型的数据集对象
StudentInfoDataSet ds = new StudentInfoDataSet();
创建DepartName表对应的TableAdapter对象
DepartNameTableAdapter depart = new DepartNameTableAdapter();
depart.Connection=conn;
//填充DepartName表
depart.Fill(ds.DepartName); //标记1
//创建StudentInfo表对应的TableAdapter对象
StudentInfoTableAdapter stu = new StudentInfoTableAdapter();
stu.Connection=conn;
//填充StudentInfo表
stu.Fill(ds.StudentInfo); //标记2
//创建SqlDataReader对象,用于填充数据集
SqlDataAdapter ad = new SqlDataAdapter();
ad.SelectCommand = new SqlCommand();
ad.SelectCommand.Connection = conn;
/ /获取查询SQL语句
ad. = "select NO,SName,Sex,Birthday,"
+"DepartName.DName,Score from StudentInfo Inner Join DepartName"
+" On
//填充数据集
ad.Fill(ds); //标记3
//创建ReportDocument对象,与水晶报表中的数据交互
ReportDocument doc = new ReportDocument();
//加载水晶报表
doc.Load(Server.MapPath("CrystalReportStudent.rpt"));
//设置报表的数据源
doc.SetDataSource(ds);
//设置报表的作者
doc.SummaryInfo.ReportAuthor = "Mr Lee";
//设置报表的标题
doc.SummaryInfo.ReportTitle = "学生信息表";
//使用CrystalReportViewer对象显示水晶报表
this.CrystalReportViewer1.ReportSource = doc;
//绑定数据
this.CrystalReportSource1.DataBind();
}
}
}
}
为何标记1和标记2那里填充数据表时不需要像填充标记3一样要设置查询SQL语句才可以填充,数据从何而来?还有为什么标记1和标记2已经把数据集ds填充了标记3那里还要再填充一次?可能是我对强类型数据集和强类型数据表的关系和概念不够熟悉,若能举例说明更好,当然例子要简单通俗