日期:2014-05-19  浏览次数:20708 次

水晶报表邦定dataset问题
代码如下:
objRpt.Load(Server.MapPath(sRptName));
ReportDocument   objRpt   =   new   ReportDocument();
objDataSet   =   myObjDB.mReturnDataset(sSearchStr, "sTempTbl ");
objRpt.SetDataSource(objDataSet);
this.webRptView.ReportSource   =   objRpt;
webRptView.DataBind();
说明:
sRptName:纪录rpt文件路径的字符串变量
webRptView:CrystalReportViewer控件
myObjDB:自定义类(mReturnDataset是这个类中的方法)
sSearchStr:查询语句(select   ...   from   ...   where   )变量
绑定后,虽然能看到数据,但是,显示的数据是rpt绑定表里面的所有数据,而不是dataset里面的内容,请教如何能让报表显示dataset里面的数据。谢谢指教

------解决方案--------------------
不是很明白意思

如果需要让报表显示查询后的内容 则应该将查询出的dataset传入报表 并重新绑定
------解决方案--------------------
如果使用的是带数据的rpt可能会出现楼主的情况,使用空白的rpt重新绑定DataSet
------解决方案--------------------
加 刷新。
------解决方案--------------------
objRpt.SetDataSource(objDataSet);
this.webRptView.ReportSource = objRpt;

==========================================
当前rpt的datasource就是objDataSet

你意思当前的rpt显示的数据和objDataSet不符?这个不可能吧??

lz的问题能否再描述清晰些?


------解决方案--------------------
ok 明白了 dataset中设置了seclet语句 那么在数据显示时例如DataGridView会根据行状态过滤

掉不需要显示的数据 而rpt似乎不行

可以这样尝试 将datatable.select变通为数据库sql 然后通过sql重新生成dataset再传入rpt

在此也继续关注 看看是否有其他方法
------解决方案--------------------
把筛选后的值放入DataSet,而不是在DataSet选取一些数据。
这样试试看。关注
------解决方案--------------------
就是说 用当前的sql语句重新连接数据库填充DataSet
------解决方案--------------------
sqlstrr = "select * from table1 where id > 5 and id <7 ";
SqlDataAdapter da = new SqlDataAdapter(sqlstrr,conn);
DataSet ds = new DataSet();
da.Fill(ds, "SeacherTable ");

………………

objRpt.SetDataSource(ds);
this.webRptView.ReportSource = objRpt;