水晶报表如何动态绑定数据?急求代码?
现在正在做一个查询学生成绩的Winform.现在form上添加了一个datagrid和一个crystalreportview,根据要求查询学生成绩记录并显示在datagrid中已实现,现在的想法是水晶报表也要实现得到和datagrid中相同的数据,即运行以后datagrid和cristalreport动态绑定同一个dataset,这儿绑定的是dataview.即datagrid显示什么数据,crystalreportview就显示什么数据.然后再在crystalreportview中把表打印出来.打印再且不说,动态绑定dataset就花了我不少时间.
主要代码如下:
private void SearcherBk_Load(object sender, System.EventArgs e)
{
dbCon=new dbConnect();
dbCon.Open();
BkMage=new BkMag(dbCon);
DataSet DS=new DataSet();
SqlDataAdapter DA=new SqlDataAdapter();
TheRpt=new CrystalReport2();
//TheRpt.SetDataSource(BkMage.GetDataView());
crystalReportViewer2.ReportSource=TheRpt;
DA.SelectCommand=new SqlCommand("select distinct 专业名 from ZyDm",dbCon.GetDbCon() );
DA.Fill(DS,"zym");
string a;
DataRow DR;
for (int i=0;i<DS.Tables["zym"].Rows.Count;i++)
{
DR=DS.Tables["zym"].Rows[i];
a=DR[0].ToString();
cbZym.Items.Add(a);
cbZym.Text=a;
}
//cbZym.DataSource=DS.Tables["zym"];
//cbZym.DisplayMember ="专业名" ; //cbZym.ValueMember="专业名"
DA.SelectCommand=new SqlCommand("select distinct 开课学期 from KeC",dbCon.GetDbCon() );
DS.Clear();
//DataSet DT=new DataSet();;
DA.Fill(DS,"xq");
cbXq.DataSource =DS.Tables["xq" ];
cbXq.DisplayMember="开课学期";
cbXh.Enabled =false;
cbXh.Text="";
}
private void button1_Click(object sender, System.EventArgs e)
{
if(cbXh.Enabled==false)
BkMage.SetSeleCmd(cbZym.Text ,cbXq.Text,"",true );
else
BkMage.SetSeleCmd(cbZym.Text,cbXq.Text,cbXh.Text,false);
BkInfo.DataSource=BkMage.GetDataView();
TheRpt.SetDataSource(BkMage.GetDataView());
this.crystalReportViewer2.ReportSource=TheRpt;
//----------------------------------------------------------------------//
this.crystalReportViewer2.RefreshReport();
if (BkMage.GetDataView().Count==0 )
MessageBox.Show("当前无任何记录!","信息");
}
当程序执行到this.crystalReportViewer2.ReportSource=TheRpt;时,出错,显示为
未处理的“CrystalDecisions.CrystalReports.Engine.InvalidArgumentException”类型的异常出现在 crystaldecisions.crystalreports.engine.dll 中。
其他信息: 文件 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\temp_4d10433c-5944-4f81-be03-581347fcb397.rpt 内出错:
无效表号。
BkMage.cs为代码剥离出来的类.
请高手们帮忙,马上要交差了.最好帮我指出错误并更正一下,我很赖的哦.