水晶报表翻页问题.

guojh021 2008-11-24 10:33:55
第一次打开,第一页显示正常,点击下一次,什么数据都没显示.

再次打开,就没这样的问题了,什么原因?

WEB VS2005+水晶报表XI
...全文
122 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
guojh021 2008-11-26
  • 打赏
  • 举报
回复
只好这样了.你好喝好.......

感谢阿泰...


我试试有么问题....
阿泰 2008-11-26
  • 打赏
  • 举报
回复
那可以用session的方案。


在你原始代码的基础上

if (!IsPostBack)
{
.....
crSource.DataBind();
后加上这么一句
Session("myreport1")=crSource.ReportDocument;
...
}
else
{
crView.reportsource=(ReportDocument)Session("myreport1");
}

这样先看看,你也可以保持crSource,我吃个饭先~~
guojh021 2008-11-26
  • 打赏
  • 举报
回复
如果只有这样才能避免 翻页问题,只能把取到的DataSet放到Session里了.
guojh021 2008-11-26
  • 打赏
  • 举报
回复
我是避免每次都向数据库里取数据,我才这样做的.
guojh021 2008-11-26
  • 打赏
  • 举报
回复
那这不是每一次都往数据库里取一次数据?
阿泰 2008-11-26
  • 打赏
  • 举报
回复
protect void SetMyReport()

=>

protected void SetMyReport()
阿泰 2008-11-26
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
}
protected void Page_Init(object sender, EventArgs e)
{
SetMyReport();
}
protect void SetMyReport() {
string cust = Request.QueryString["Cust"];
string refNo = Request.QueryString["RefNo"];
string cust1 = Request.QueryString["Cust1"];
string sqlWhere = "Customer = '" + cust + "'";
sqlWhere += " AND Selection='" + refNo + "'";
string sqlCommitment = "Select * from VIEW_CR_COMMITMENT Where " + sqlWhere;
string sqlEAN = "Select * from VIEW_CR_COMMITMENT_EAN Where " + sqlWhere;
string sqlSelection = "Select * from VIEW_CR_COMMITMENT_SELECTION WHERE SELECTION = '" + refNo + "'";
string sqlCountry = "";
if (cust1 == null || cust1== "")
{
sqlCountry = "Select * from VIEW_CR_COMMITMENT_COUNTRY WHERE " + sqlWhere;
}
else
{
sqlCountry = "Select * from VIEW_CR_COMMITMENT_COUNTRY WHERE " + sqlWhere + " AND OTHERCOUNTRYCODE IN('" + cust1.Replace(",", "','") + "')";
}
DBAdapter adp = new DBAdapter();
COMMITMENT ds = new COMMITMENT();
ds._COMMITMENT.Merge(adp.GetTableBySql(sqlCommitment, "COMMITMENT"));
ds.COUNTRY.Merge(adp.GetTableBySql(sqlCountry, "COUNTRY"));
ds.SELECTION.Merge(adp.GetTableBySql(sqlSelection, "SELECTION"));
ds.EAN.Merge(adp.GetTableBySql(sqlEAN, "EAN"));
crSource.ReportDocument.SetDataSource(ds);
crSource.ReportDocument.Subreports["COUNTRY"].SetDataSource(ds);
crSource.ReportDocument.Subreports["EAN"].SetDataSource(ds);
crSource.DataBind();
crView.HasCrystalLogo = false;
crView.HasToggleGroupTreeButton = false;
this.crView.DataBind();
}



自己注意下大小写
guojh021 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 babyt 的回复:]
引用 3 楼 jjcl521 的回复:

去看看 阿泰的
http://www.cnblogs.com/babyt/archive/2005/06/10/172034.html


呵呵,这个文章不适用此问题。

这个代码应该是楼主在load的时候,用了的时候

一般解决方法是把报表生成代码放到page_init里去
[/Quote]

怎么个放法?

报表生成代码 是指哪些?给个示例.
以下我我的代码,把哪段放到page_init里?

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string cust = Request.QueryString["Cust"];
string refNo = Request.QueryString["RefNo"];
string cust1 = Request.QueryString["Cust1"];
string sqlWhere = "Customer = '" + cust + "'";
sqlWhere += " AND Selection='" + refNo + "'";
string sqlCommitment = "Select * from VIEW_CR_COMMITMENT Where " + sqlWhere;
string sqlEAN = "Select * from VIEW_CR_COMMITMENT_EAN Where " + sqlWhere;
string sqlSelection = "Select * from VIEW_CR_COMMITMENT_SELECTION WHERE SELECTION = '" + refNo + "'";
string sqlCountry = "";
if (cust1 == null || cust1== "")
{
sqlCountry = "Select * from VIEW_CR_COMMITMENT_COUNTRY WHERE " + sqlWhere;
}
else
{
sqlCountry = "Select * from VIEW_CR_COMMITMENT_COUNTRY WHERE " + sqlWhere + " AND OTHERCOUNTRYCODE IN('" + cust1.Replace(",", "','") + "')";
}
DBAdapter adp = new DBAdapter();
COMMITMENT ds = new COMMITMENT();
ds._COMMITMENT.Merge(adp.GetTableBySql(sqlCommitment, "COMMITMENT"));
ds.COUNTRY.Merge(adp.GetTableBySql(sqlCountry, "COUNTRY"));
ds.SELECTION.Merge(adp.GetTableBySql(sqlSelection, "SELECTION"));
ds.EAN.Merge(adp.GetTableBySql(sqlEAN, "EAN"));
crSource.ReportDocument.SetDataSource(ds);
crSource.ReportDocument.Subreports["COUNTRY"].SetDataSource(ds);
crSource.ReportDocument.Subreports["EAN"].SetDataSource(ds);
crSource.DataBind();
crView.HasCrystalLogo = false;
crView.HasToggleGroupTreeButton = false;
this.crView.DataBind();
}
}

guojh021 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 babyt 的回复:]
引用 3 楼 jjcl521 的回复:

去看看 阿泰的
http://www.cnblogs.com/babyt/archive/2005/06/10/172034.html


呵呵,这个文章不适用此问题。

这个代码应该是楼主在load的时候,用了!postback的时候

一般解决方法是把报表生成代码放到page_init里去
[/Quote]
哦?这样可以解决?我看看去
阿泰 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jjcl521 的回复:]
去看看 阿泰的
http://www.cnblogs.com/babyt/archive/2005/06/10/172034.html
[/Quote]

呵呵,这个文章不适用此问题。

这个代码应该是楼主在load的时候,用了!postback的时候

一般解决方法是把报表生成代码放到page_init里去
jjcl521 2008-11-26
  • 打赏
  • 举报
回复
去看看 阿泰的
http://www.cnblogs.com/babyt/archive/2005/06/10/172034.html
fy_ztsm 2008-11-26
  • 打赏
  • 举报
回复
顶!
soloist007 2008-11-24
  • 打赏
  • 举报
回复
路过

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧